题目描述
令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出PM到PN的所有素数。
输入
输入在一行中给出M和N,其间以空格分隔。
输出
输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。
样例输入 Copy
5 27
样例输出 Copy
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<math.h>
#define MAX 110000
int fun(int n)
{
int k,i;
if (n <= 3)
return n > 1;
if ( n % 2 == 0 || n % 3 == 0 )
return 0;
k = ( int )sqrt( n ) + 1;
for( i = 5; i < k; i += 6 ){
if( n % i == 0 || n % (i+2) == 0 ){
return 0;
}
}
return 1;
}
int main()
{
int m,n,i,k,count;
static int a[MAX];
scanf("%d%d",&m,&n);
for(i=2,k=1;i<=MAX;i++)
if(fun(i))
a[k++]=i;
count = 0;
for ( i = m; i <= n; i++ )
{
if ( count % 10 != 0 )
printf(" ");
printf("%d", a[i]);
count++;
if ( count % 10 == 0 ) printf("\n");
}
if((n-m)%10==0);
else
printf("\n");
return 0;
}