素数筛选法

来源:互联网 发布:剑网3捏脸数据怎么导入 编辑:程序博客网 时间:2024/06/05 08:49


今天一个大四学长给我们讲了一下素数筛选法,我觉得学长老逗了,现在言归正传,说一下素数筛选;

素数筛选:

刚开始我们的程序

第一个代码:

int sushu(int m)
{
    if(m==1)return 0;
    for(int i=2;i*i<=m;i++)
    {
        if(m%i==0)return 0;
    }
    return 1;
}

但是现在呢,我们要进行优化;

第二个代码:

void sushu()
{
    memset(data,1,sizeof(data));
    for(int i=2;i<maxn;i++)
    {
        if(data[i])
         for(long long j=i+i;j<maxn;j+=i)
           data[j]=0;
    }
    for(int i=2;i<maxn;i++)
    if(data[i])
    cout<<i<<" ";
    cout<<endl;
}

这个代码还是慢,现在进行最终代码就要闪亮登场了;

终极代码:

void sushu()
{
    memset(data,1,sizeof(data));
    for(int i=2;i<maxn;i++)
    {
        if(data[i])
         for(long long j=(long long)i*i;j<maxn;j+=i)
           data[j]=0;
    }
    for(int i=2;i<maxn;i++)
    if(data[i])
    cout<<i<<" ";
    cout<<endl;
}

0 0
原创粉丝点击