码迷,mamicode.com
首页 > 其他好文 > 详细

筛选法处理素数

时间:2019-03-03 22:13:48      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:筛选   printf   name   out   std   c++   ret   ace   for   

#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;
}

筛选法处理素数

标签:筛选   printf   name   out   std   c++   ret   ace   for   

原文地址:https://www.cnblogs.com/qq-1585047819/p/10467884.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!