对判断质数的算法的优化

题解 P5736 【【深基7.例2】质数筛】 - HsKr - 洛谷博客 (luogu.com.cn)

ps.题没必要看

bool isprime(int n){
    if(n<=1) return false;
    if(n==2||n==3) return true;
    if(n%6!=1&&n%6!=5) return false;
    for(int i=5;i*i<=n;i+=6) if(n%i==0||n%(i+2)==0) return false;//6x+5和6(x+1)+1作为除数 (x从0开始)
    return true;
}

 

除2,3外,其他所有素数都必须是6n+1或6n+5,

因为

6n+2=2(3n+1),

6n+3=3(2n+1),

6n+4=2(3n+2),都有非1和本身因数,不是素数

 

posted @ 2021-07-09 20:03  infocodez  阅读(111)  评论(0编辑  收藏  举报