判断素数(翁凯男神MOOC)

从2到x-1测试是否可以整除

int isPrime(int x);
int main(int argc, char **argv)
{
    int x;
    scanf("%d",&x);
    if(isPrime(x)){
        printf("%d是素数\n",x);
    }else{
        printf("%d不是素数\n",x);
    }

    return 0;
}

int isPrime(int x)
{
    int ret=1;
    int i;
    if(x==1) ret=0;
    for(i=2;i<x;i++){
        if(x%i==0){
            ret=0;
            break;
        }
    }
    return ret;
}

●对于n要循环 n-1遍

去掉偶数后,从3到x-1,每次加2

int isPrime(int x)
{
    int ret=1;
    int i;
    if(x==1||(x%2==0&&x!=2)) ret=0;
    for(i=3;i<x;i+=2){
        if(x%i==0){
            ret=0;
            break;
        }
    }
    return ret;
}

●如果x是偶数,立刻

●当n很大时,循环n/2 遍

无须到x-1,到sqrt(x)就够了
 

判断是否能被已知的且<x的素数整除

猜你喜欢

转载自www.cnblogs.com/zhuxuan1997/p/9392060.html