素数问题——Meisell-Lehmer算法

我觉得素数问题不是一两篇文章就可以解释清楚的,在数论中很多相关问题至今都无法解决。这里只是简单的总结在竞赛中用到的一小部分。

HDU5901这道是网络赛的一道素数题,有多种解法,这里推荐一些大佬的博客:http://blog.youkuaiyun.com/chaiwenjun000/article/details/52589457

http://blog.youkuaiyun.com/angon823/article/details/52577145(有资料链接)

素数筛有很多种方法,比如欧拉筛,埃氏筛,Meisell-Lehmer算法等等

这里主要说一下Meisell-Lehmer算法

Meisell-Lehmer算法模板(计算2~n中的素数个数)

bool np[maxn];  
int prime[maxn],pi[maxn];  
  
int getprime()  
{  
    int cnt=0;  
    np[0]=np[1]=true;  
    pi[0]=pi[1]=0;  
    for(int i=2; i<maxn; ++i)  
    {  
        if(!np[i]) prime[++cnt]=i;  
        pi[i]=cnt;  
        for(int j=1; j<=cnt&&i*prime[j]<maxn; ++j)  
        {  
            np[i*prime[j]]=true;  
            if(i%prime[j]==0) break;  
        }  
    }  
    return cnt;  
}  
const int M=7;  
const int PM
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值