令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<stdio.h> #include<string.h> #include<math.h> #define max 110000 int p[max]; int prime[10010]; void Prime(){ int num=0; p[0]=p[1]=1; p[2]=0; for(int i=2; i<max&&num<10010; i++){ if(!p[i]) prime[num++]=i; for(int j=0; j<num&&i*prime[j]<max; j++){ p[i*prime[j]]=1; if(i%prime[j]==0) break; } } } int main() { int n,m; memset(p,0,sizeof(p)); memset(prime,0,sizeof(prime)); Prime(); while(scanf("%d %d",&m,&n)==2){ int k=0; for(int i=m-1; i<n; i++){ if(k<9){ if(k) printf(" "); printf("%d",prime[i]); k++; }else{ printf(" %d\n",prime[i]); k=0; } } if(k) printf("\n"); } return 0; }