#include<stdio.h>
#include<math.h>
int main(){
long long n,a,i,f;
scanf("%lld",&n);
while(n--)
{
f=0;
scanf("%lld",&a);
for(i=2;i<=sqrt(a);i++){
if(a%i==0){
f=1;
break;
}
}
if(f==0){
printf("YES\n");
}
else
printf("NO\n");
}
return 0;
}
第一行输入是测试用例的数量。最大测试用例数= 500,0 <= a <= 5 * 10 ^ 9。
我们必须检查数字是否为素数。如果数字是主要打印YES
其他NO
。
这是我的代码,每次提交时都会得到错误的答案。
Sample Input (Plaintext Link)
5
2
3
4
5
6
Sample Output (Plaintext Link)
YES
YES
NO
YES
NO
答案 0 :(得分:1)
您提到的测试用例属于0 <= n <= 5*10^9
范围。对于数字YES
和0
,您的算法会打印1
。它应该为每一个打印NO
,因为它们不是真正的素数。检查这些数字的问题规范并打印相应的答案。
答案 1 :(得分:-3)
数学库。对于Unix / Linux,您可以使用-lm
命令进行编译。
gcc test.c -o test -lm
如果您在线提交,则必须创建自己的sqrt()
功能。