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 |
思路分析:较为简单,只要能被2及其以上的数除尽就代表一定不是素数
#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace::std;
int main()
{
unsigned int n;
while (scanf("%d",&n)&&n!=0)
{
if (n == 1) {
printf("No\n");
}
else {
int flag = 1;//假定这个数是素数,那么就定义flag = 1
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
flag = 0;//但凡能除尽就代表一定不是素数,所以立马flag = 0;
break;
}
}
if (flag == 0) {
printf("No\n");
}
else {
printf("Yes\n");
}
}
}
return 0;
}