1.题目描述:
令Pi表示第i个素数。现任给两个正整数M <= N <= 10^4,请输出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
2.解题思路:
快速求素数的方法:sqrt函数和建立动态素数表。和第1007题大致相同。输出部分比较简单。
3.代码部分:
#include<stdio.h>
#include<math.h>
int find_prim(int* list,int pn)
{
int i,listnum,flag=0,listlenth=0;
for(i=2;listlenth<pn;i++)
{
flag=0;
for(listnum=0 ; listnum<10000&&listnum<listlenth&&listnum<=sqrt(i); listnum++)
{
if(i%list[listnum]==0)
{
flag=1;
break;
}
}
if(flag)
continue;
else
{
list[listlenth]=i;
listlenth++;
}
}
}
int main()
{
int list[10000]={0},i,pm,pn;
scanf("%d %d",&pm,&pn);
find_prim(list,pn);
for(i=pm-1;i<pn && list[i]!=0;i++)
{
if((i-pm+1)%10>0)
printf(" ");
printf("%d",list[i]);
if((i-pm+2)%10==0 && i>pm-1)
puts("");
}
return 0;
}