0
点赞
收藏
分享

微信扫一扫

1076 素数


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分。


举报

相关推荐

0 条评论