判断素数

来源:互联网 发布:质量数据的统计方法 编辑:程序博客网 时间:2024/05/18 21:49

判断素数

大于2的偶数一定为合数

bool Is_prime(int n){    if(n<=1) return false;    if(n==2) return true;    if(n%2==0)    {        return false;    }    else    {        for(int i=3;i*i<=n;i+=2)        {            if(n%i==0)            {                return false;            }        }    }    return true;}

优化的:
首先,一个数n(n>=4)对6取余,如果它余0,2,3,4,则它一定是合数,这样就减去了2/3的情况。
若此数余1和5,进行下一步处理:
如果n可以整除(6k+1) (k=1,2,3……,6k+1<=sqrt(n)),n为合数
如果n可以整除(6K+5)(k=0,1,2……,6k+5<=sqrt(n)),n为合数
如果不满足上述条件,即为素数
bool Is_prime(int n){    if(n<=1) return false;    if(n==2||n==3) return true;    if(n%6==2||n%6==3||n%6==4||n%6==0)    {        return false;    }    else    {        for(int i=5,j=7;i*i<=n||j*j<=n;i+=6,j+=6)        {            if(n%i==0||n%j==0)            {                return false;            }        }    }    return true;}

原创粉丝点击