Description
对于大于1的自然数,如果n为素数,那么所有大于1且不大于n的平方根的自然数都不能整除n,反之亦然。所以我们可以通过测试来确定n是否为素数。现在给出n,要你求是否为素数,是输出Yes,否则输出No
每行一个正整数n,n<=2^32-1,如果n为0,则输入结束。判断n是否为素数
每行输出一个用例的结果,如果是输出"Yes",否则输出“No”
Sample Input
2
3
4
5
6
0
Sample Output
Yes
Yes
No
Yes
No
#include<stdio.h>
#include<math.h>
int main()
{
int i,n;
int a = 0;
while(scanf("%d",&n));
{
if(n==0)
{
return 0;
}
else
{
for(i=1;i<=sqrt(n);i++)
{
if(n%i==0)
{
a+=1;
}
}
if(a==1)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
}
return 0;
}
我的是这样,哪里不对?
修改如下,问题见注释,共参考:
#include<stdio.h>
#include<math.h>
int main()
{
int i,n;
int a = 0;
while(scanf("%d",&n)==1)// ';' 修改,这里多了分号
{
if(n==0)//n=0 时,退出
{
break;
//return 0;
}
else
{
a=0;
for(i=2;i<=sqrt(n);i++) //for(i=1;i<=sqrt(n);i++)
{
if(n%i==0)
{
a=1;//a+=1;
break;
}
}
if(a==1 || n==1)
{
printf("No\n");
}
else
{
printf("Yes\n");
}
}
}
return 0;
}
请把for里面的i-初始值设置为2
因为0 1 不是素数
把24行和28行两句话互换位置,在15行前面插入一句:a=0;