题目来源:http://www.nowcoder.com/pat/6/problems
题目描述
令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出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题目分析:首先求出N个素数,然后输出M到N之间的素数即可。
#include<stdio.h>
#include"math.h"
bool IsSU(int a)
{
if(a<2)
return false;
else if(a==2)
return true;
else{
for(int i=2;i<=(int)sqrt(a);i++)
{
if(a%i==0)
return false;
}
return true;
}
}
int main()
{
int m,n;
int arr[10000];
int count=0;
int N=2;
scanf("%d%d",&m,&n);
while(count<n)
{
if(IsSU(N))
{
arr[count]=N;
count++;
}
N++;
}
N=0;
for(int j=m-1;j<n;j++)
{
N++;
if(N%10==0||j==n-1)
printf("%d",arr[j]);
else printf("%d ",arr[j]);
if(N%10==0)
printf("\n");
}
}