素数2021年下学期《C语言程序设计》作业4-循环结构2
Description | 对于大于1的自然数,如果n为素数,那么所有大于1且不大于n的平方根的自然数都不能整除n,反之亦然。所以我们可以通过测试来确定n是否为素数。现在给出n,要你求是否为素数,是输出Yes,否则输出No 每行一个正整数n,n<=2^32-1,如果n为0,则输入结束。判断n是否为素数 每行输出一个用例的结果,如果是输出"Yes",否则输出“No” |
这里有两个坑人的地方。
第一、头文件。math.h比cmath运行起来要快,同理,stdio.h比cstdio运行的快。
第二、测试点有出现“1”的情况。
#include<stdio.h> //坑
#include<math.h> //坑
using namespace std;
int main(){
while(1){
unsigned int n;//注意点2、要记得用无符号变量,不然存不下。
scanf("%d",&n);
if(n==0) return 0;
if(n==1){
printf("No\n");
continue;
}
unsigned int m=floor(sqrt(n));//注意点1、用变量存上n开方的值可以加快for循坏时的判断。
bool pd=1;
for(int i=2;i<=m;i++)
{
if(n%i==0){
pd=0;
break;
}
}
if(pd) printf("Yes\n");
else printf("No\n");
}
}
|