当前位置: 代码迷 >> 综合 >> 1013 数素数 (20 分)
  详细解决方案

1013 数素数 (20 分)

热度:7   发布时间:2023-12-05 06:59:48.0

令 Pi? 表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 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>
using namespace std;
const int maxn=1e6;
int prime[maxn],pnum=0;//prime数组存放所有素数,pnum为素数个数
bool p[maxn]={false};//p[i]为false表示i是素数void find_prime(int n)
{for(int i=2;i<maxn;i++){if(p[i]==false){prime[pnum++]=i;//把素数i存到prime数组中if(pnum>=n)break;//控制素数个数 for(int j=i+i;j<maxn;j+=i){p[j]=true;//筛去所有i的倍数 } }}} int main(){int m,n,count=0;cin>>m>>n;find_prime(n);for(int i=m;i<=n;i++){cout<<prime[i-1];//从标从0开始count++;if(count%10!=0&&i<n)cout<<" ";else cout<<endl; }return 0;}