判断素数(翁凯男神MOOC)

本文介绍了几种优化后的素数判断算法。首先通过简单的循环检查从2到x-1的整除性;接着去除所有偶数,仅从3开始每隔2个数进行检查,进一步减少循环次数;最后提出只需检查到sqrt(x)即可,避免不必要的运算,极大地提高了效率。
摘要由CSDN通过智能技术生成

从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的素数整除

 

转载于:https://www.cnblogs.com/zhuxuan1997/p/9392060.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值