一.问题:
令 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
二.思路:
找出N个素数存放进数组nums[10000],然后把位置区间[M-1,N-1]内的素数按格式打印输出。
三.代码实现(C语言实现):
#include <math.h>
#include <stdio.h>
// 判断num是否为素数
int func1(int num)
{
if (num == 0 || num == 1)
{
return 0;
}
else if (num == 2)
{
return 1;
}
for (int j = 2; j < (sqrt(num) + 1); j++)
{
if (num % j == 0)
{
return 0;
}
}
return 1;
}
// 找出N个素数并存放在数组nums里面
void func2(int N, int *nums)
{
int j = 0;
for (int x = 0; 1; x++)
{
if (j >= N)
{
return;
}
if (func1(x))
{
nums[j] = x;
j++;
}
}
}
int main()
{
// 输入数据
int M, N;
int nums[10000] = {0};
scanf("%d %d", &M, &N);
// 处理数据
func2(N, nums);
// 输出数据
int count = 1;
for (int i = (M - 1); i < N; i++, count++)
{
if (count % 10 == 0 || i == (N - 1))
{
printf("%d\n", nums[i]);
}
else
{
printf("%d ", nums[i]);
}
}
return 0;
}