题目简介
令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
思路
此题数据量太小,只需用最简单的素数定义法即可。
C++代码样例
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <cmath>
using namespace std;
int prime[10005];
bool isPrime(int i)
{
for(int j = 2; j <= (int)sqrt(i); j++)
{
if(i % j == 0)
{
return false;
}
}
return true;
}
int main(void)
{
int num = 0;
int i = 0;
int begin = 0, end = 0;
int count = 1;
memset(prime, 0, sizeof(prime));
scanf("%d %d", &begin, &end);
for(i = 2;; i++)
{
if(num == end)
{
break;
}
if(isPrime(i))
{
prime[num++] = i;
}
}
for(i = begin - 1; i <= end - 1; i++)
{
if(count % 10 != 0)
{
if(i == end - 1)
{
printf("%d", prime[i]);
break;
}
printf("%d ", prime[i]);
count++;
}
else
{
printf("%d\n", prime[i]);
count++;
}
}
return 0;
}