[pat乙]1013 数素数

僤鯓⒐⒋嵵緔 提交于 2020-03-06 01:44:52

1013 数素数 (20 分)

1013 数素数 (20 分)

令 P​i​​ 表示第 i 个素数。现任给两个正整数 M≤N≤10​4​​,请输出 P​M​​ 到 P​N​​ 的所有素数。

输入格式:

输入在一行中给出 M 和 N,其间以空格分隔。

输出格式:

输出从 P​M​​ 到 P​N​​ 的所有素数,每 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

思路:

注意

超时问题

#include <iostream>
#include <math.h>
using namespace std;

int primeNum[1000001] = { 2,3,5,7 }, index = 4;

void prime(int N) {
	int k = 0;
	for (int i = 3; i <= 1000001; i += 2) {
		for (int j = 3; j <= (int)sqrt(i); j++)
			if (i%j == 0)	break;
			else if (j == (int)sqrt(i))	primeNum[index++] = i, k++;

		if (k == N) break;

	}
}

void primePut(int M, int N) {
	int index = 0;
	for (int i = M - 1; i <= N - 1; i++)
	{
		index++;

		if (i == N - 1)	cout << primeNum[i];
		else if (!(index % 10))	cout << primeNum[i] << endl;
		else cout << primeNum[i] << ' ';
	}
}

int main()
{
	int M, N;
	cin >> M >> N;

	prime(N);

	primePut(M, N);

	return 0;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!