#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdbool.h>
bool Isprime(int n) {
if (n <= 1) {
return false;
}
int i;
for (i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int len=0;//求长度
while(n)
{
flag/=10;
len++;
}
//疯狂if
if(len==1||len==2||len==3)
{
if(Isprime(n))前面的while已经把n变成了0,所以这里的n不再是开始输入的n了
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
}
return 0;
}
解决办法:我们设一个flag保存n的值,或者代替n去while