首页 > 其他 > 详细

素数筛

时间:2020-03-16 16:18:52      阅读:71      评论:0      收藏:0      [点我收藏+]
bool isPrime(int x)
{
    if(n<=1)
        return false;
    for(int i=2;i<=(int)sqrt(x);i++)
    {
        if(x%i==0)
            return false;
    }
    return true;
}

利用以上函数,对数字直接进行判断,可以获得素数,这是普通的方法

 

如果x的范围比较小,i*i不会溢出int的范围,可以使用下面的代码

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

 

 

 

下面介绍更快的方法

素数筛法

2是素数,2的所有倍数就都可以判断为非素数

如果一个数n不是素数,那么它一定有素因子,所以在判断其素因子的时候就已经将这个数n否决了。

void Find_Prime(int n)//n是范围
{
    for(int i=2;i<n;i++)
    {
        if(prim[i]==false)
        {
//            for(int j=2;j*i<n;j++)
//                prime[j]=true;
            for(int j=i+i;j<n;j=j+i)
                prime[j]=true;
        }
    }
}

 

素数筛

原文:https://www.cnblogs.com/lxzbky/p/12504426.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!