题目描述:
令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
思路:先打一份素数表,由题意得一直要找到第10000个素数,将素数存储到数组中,利用双重循环进行打印
#include <stdio.h>
#include <math.h>
#include <iostream>
using namespace std;
int main()
{
int P[20000];
int n=0;
for(int i=2;i<110000;i++)
{
int flag=0;
for(int j=2;j<=sqrt(i);j++)
{
if(0 == i%j){flag=1;break;}
}
if(0==flag)
{
P[n]=i;
//cout<<P[n]<<endl;
n++;
}
}
//cout<<n<<endl;
int M,N;
cin>>M>>N;
int count=M-1;
while(count<=N-1)
{
int j=0;
for(j=0;j<9;j++)
{
if(count>N-2) break;
cout<<P[count]<<' ';
count++;
}
if(0 == j%9)
{
if(count>N-1) break;
cout<<P[count]<<endl;
count++;
}
else
{
cout<<P[count]<<flush;
break;
}
}
return 0;
}