筛选法处理素数

Posted qq-1585047819

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了筛选法处理素数相关的知识,希望对你有一定的参考价值。

#include <bits/stdc++.h>
using namespace std;    //筛选法处理素数
int arr[1000005]={0};   //运用了预处理的方法
int gdc()
{
    arr[0]=arr[1]=1;  //初始化0和1不是素数不要赋值为0
    int p=1000005/2;    //这里控制一半就行了
    for(int i=0;i<=p;i++)
    {
        if(arr[i]==0)   //如果这个是素数
        {
            int t=2*i;  
            while(t<1000005)
            {
                arr[t]=i;
                t=t+i;
            }
        }
    }
}
int main()
{
    int n,m;
    gdc();     //实行一回了就够了 预处理
    while(cin>>n>>m)
    {
        int flag=0,jishu=0,biaoji;
        while(n<=m)
        {
            int biaoji=0;
            if(arr[n]==0)
            {
                if(!flag)
                    cout << n,flag=1,jishu++,n++;
                else cout << " " << n,n++,jishu++;
                if(jishu%10==0) cout << endl,biaoji=1,flag=0;
            }
            if(arr[n]!=0)
                n++;
        }
        if(biaoji==0) printf(" ");
        else printf(" ");
    }
    return 0;
}

以上是关于筛选法处理素数的主要内容,如果未能解决你的问题,请参考以下文章

如何提高筛选法求大范围素数的效率

c语言中用筛选法求素数

素数筛选法

素数筛选法

埃拉托色尼筛选法求素数

数论——素数筛选法与整数的素因子分解