筛选法处理素数

#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("\n\n");
        else printf("\n");
    }
    return 0;
}

posted @ 2019-03-03 21:48  厂长在线养猪  Views(110)  Comments(0Edit  收藏  举报