筛法求素数

 

问题 E: 筛选法求质数

时间限制: 1 Sec  内存限制: 128 MB

题目描述

求N(<= 20000000)以内的质数。

 

输入

N

 

输出

从小到大输出N以内的质数

 

样例输入

10

样例输出

2 3 5 7

提示

 
 
如题 
粗暴方法加
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int a[20000045];
void write(int x)
{
    char ch[45];
    int l=0;
    while(x!=0)
    {
        ch[++l]=x%10+'0';
        x/=10;
    }
    for(int i=l;i>=1;i--)
    putchar(ch[i]);
}
int main()
{
    int n;
    cin>>n;
    int p=sqrt(n);
    for(register int i=2; i<=n; i++)
    {
        if(a[i])
            continue;
        else
        {
            write(i);
            putchar(' ');
        }
        if(i>p)
            continue;
        for(register int j=i*i; j<=n; j+=i)
            a[j]=1;
    }
    return 0;
}

//        FOR C.H

 

posted @ 2017-06-16 15:47  GSHDYJZ  阅读(147)  评论(0编辑  收藏  举报