拿一些数字&发现它是否是主要的?

时间:2015-03-01 14:22:13

标签: c

#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

2 个答案:

答案 0 :(得分:1)

您提到的测试用例属于0 <= n <= 5*10^9范围。对于数字YES0,您的算法会打印1。它应该为每一个打印NO,因为它们不是真正的素数。检查这些数字的问题规范并打印相应的答案。

答案 1 :(得分:-3)

构建可执行文件时必须包含

数学库。对于Unix / Linux,您可以使用-lm命令进行编译。

gcc test.c -o test -lm

如果您在线提交,则必须创建自己的sqrt()功能。