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
1 #include<stdio.h> 2 #include<math.h> 3 #define M 110001 4 5 int mark[M]; 6 int prime[11001]; //使用素数筛选法先筛选出1W个素数 7 int primeSize; 8 int main() 9 { 10 int m,n,temp; 11 int i,j; 12 int cnt = 0; 13 14 scanf("%d%d",&m,&n); 15 temp =( int) sqrt(M)+1; //如果这里不开方时间复杂度就变成 M*M相当大 16 for( i=2; i<temp; i++) 17 { 18 if( mark[i]==1) continue; 19 for( j=i*i; j<M; j+=i) 20 mark[j] = 1; 21 } 22 for( i=2; i<M; i++) 23 { 24 if( mark[i]==0) 25 prime[primeSize++]=i; 26 } 27 for( j=m-1; j<n-1; j++) 28 { 29 printf("%d",prime[j]); 30 cnt++; 31 if( cnt%10==0) 32 printf("\n"); 33 else printf(" "); 34 } 35 printf("%d",prime[j]); //最后一位没有空格 36 return 0; 37 }
在这个国度中,必须不停地奔跑,才能使你保持在原地。如果想要寻求突破,就要以两倍现在速度奔跑!