8 solutions

  • 0
    @ 2026-10-15 4:23:01
    //如何提高判断效率?
    //p1去掉偶数,用于判断整数是否为素数的除数范围右界只用取到平方根
    //p2如果构建一个素数表,假定所有数都为素数标记1,从2开始把2的倍数全部标记为非素数,从3开始将每个3的倍数标记为非素数......当然不包括2,3(这题数据不连续应该用不上这个解法)
    //p3  sqrt函数返回读入类型是double,整数有可能会被截断有误差,不如i*i<=x
    #include<stdio.h>
    int z(int a);
    int main(void){
    int q;
    scanf("%d",&q);
    int number;
    int cnt=0;
    while(cnt<q){
        scanf("%d",&number);
        cnt++;
        int ret=z(number);
        if(ret)
        printf("Yes\n");
        else
        printf("No\n");
        
        }
        return 0;
    }
    int z(int a){
        int i;
        int ret=1;
        if((a!=2&&a%2==0)||a==1)
        ret=0;//不是素数
        else{
            for(i=2;i*i<=a;i++){
                if(a%i==0){
                    ret=0;
                    break;
                     }  
                 }
            }
        return ret;
        }
    

    Information

    ID
    43
    Time
    5000ms
    Memory
    256MiB
    Difficulty
    7
    Tags
    # Submissions
    1461
    Accepted
    302
    Uploaded By