1013 数素数 (20 分)

1013 数素数 (20 分)

Pi​​ 表示第 i 个素数。现任给两个正整数 MN104​​,请输出 PM​​ 到 PN​​ 的所有素数。

输入格式:

输入在一行中给出 M 和 N,其间以空格分隔。

输出格式:

输出从 PM​​ 到 PN​​ 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。

输入样例:

5 27

输出样例:

11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103

#include<iostream>
#include<vector>
#include<algorithm>
#include<map>
#include<set>
#include<cmath>
#include<climits>
#include<sstream>
#include<cstdio>
#include<string.h>
#include<unordered_map>
using namespace std;
long long int maxn=1000000;
int main()
{
    vector<int>primes(maxn,1);
    vector<int> p;
    p.push_back(0);
    int m,n;
    scanf("%d%d",&m,&n);
    for(long long  i=2;i<=maxn;i++)
    {
        if(primes[i]==1)
        {
            p.push_back(i);
            if(p.size()>n) break;
            for(long long  j=i+i;j<=maxn;j+=i)
                primes[j]=0;
        }
    }

    int num=0;
    int state=0;
    for(int i=m;i<=n;i++)
    {
        if(state!=0) printf(" ");
        printf("%d",p[i]);
        state=1;
        num++;
        if(num%10==0)
        {
            state=0;
            printf("
");
        }

    }
    return 0;
}
原文地址:https://www.cnblogs.com/zhanghaijie/p/10346622.html