题意(分析):
一个素数可以被分解为两个素数就叫半素数,判断半素数;
代码:
#include<bits/stdc++.h>
using namespace std;
int s(int a)
{
int t=sqrt(a),i;
for( i=2;i<=t;i++)
if(a%i==0)
break;
if(i>t)
return 1;
else
return 0;
}
int main()
{
int n;
while(cin>>n)
{
int t=sqrt(n),i,a,m=0;
if(s(n))
cout<<"No"<<endl;
else
{for(i=2;i<=t;i++)
if(n%i==0)
{
m++;
a=i;
}
if(m>1)
cout<<"No"<<endl;
else
if(s(a)&&s(n/a))
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}
return 0;
}
using namespace std;
int s(int a)
{
int t=sqrt(a),i;
for( i=2;i<=t;i++)
if(a%i==0)
break;
if(i>t)
return 1;
else
return 0;
}
int main()
{
int n;
while(cin>>n)
{
int t=sqrt(n),i,a,m=0;
if(s(n))
cout<<"No"<<endl;
else
{for(i=2;i<=t;i++)
if(n%i==0)
{
m++;
a=i;
}
if(m>1)
cout<<"No"<<endl;
else
if(s(a)&&s(n/a))
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}
return 0;
}
感想:
判断素数要写成函数,更加方便,从2到根号n计算因子个数时要注意,个数大于等于2时就不符合。