1013. 数素数 (20) 令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> #include <cstring> using namespace std; #define MAX_NUM 400000 #define PRIME_NUM 10010 int main(void) { int tmp[MAX_NUM]; memset(tmp,0,sizeof(tmp)); int prime[PRIME_NUM]; for(int i=2;i<MAX_NUM;i++) { tmp[i]=i; } for(int j=2;j<MAX_NUM/2;j++) { if(tmp[j]!=0) { for(int k=j+j;k<MAX_NUM;k+=j) { tmp[k]=0; } } } int cnt=0; for(int i=2;i<MAX_NUM;i++) { if(tmp[i]!=0) { prime[cnt]=tmp[i]; cnt++; } } int m,n; cin>>m>>n; int ans=1; for(int i=m-1;i<=n-1;i++) { if(i==(n-1)||ans%10==0) { cout<<prime[i]<<endl; ans=1; } else { cout<<prime[i]<<" "; ans++; } } return 0; }