PAT 乙级 1013 题解 (Basic Level) Practice

版权声明:本文为博主原创文章,转载请说明出处。 https://blog.csdn.net/qq278672818/article/details/85102229

关键是要粗略估计质数的值范围

#include<iostream>
#include<vector>
using namespace std;

int main()
{
    const int N=110000;
    int m,n;
    cin>>m>>n;
    vector<int> v;
    int num[N];
    int i,j;

    if(n==0)
        return 0;
    if(m==0)
        m=1;

    for(i=2;i<N;i++)
        num[i]=1;
    for(i=2;i<N;++i)
    {
        if(num[i] == 0)
            continue;
        v.push_back(i);
        if((long long)i*i >= N)
            continue;
        for(j=i*i;j<N;j+=i)
            num[j] = 0;
    }
    for(i=0;i<=n-m;i++)
    {
        cout<<v[i+m-1];
        if(i == n-m)
            continue;
        if((i+1)%10 == 0)
            cout<<'\n';
        else
            cout<<' ';
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq278672818/article/details/85102229