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
Source
ericxie
这道题蛮自闭的,调试了好久。把n的类型改成unsigned int才通过,为什么int不行?
#include <stdio.h>
#include <math.h>
int main()
{
unsigned int n;//int类型就wrong,为啥呢?
while(scanf("%d",&n)&&n!=0)
{
int i,flag=1;
if(n<=1)//当n小于1时,不是素数
{
printf("No\n");
}
else
{
for(i=2;i<=sqrt(n);i++)//由题干Description来建立遍历
{
if(n%i==0)//判断能否被i整除
{
flag=0;
break;//不是素数,直接跳出循环
}
}
if(flag==1)//是素数
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
}
return 0;
}
写于2021年8月15日23:52分。