c++求第M个到第N个数之间所有素数
作者:野牛程序员:2024-07-04 11:04:20 C++阅读 2951
c++求第M个到第N个素数之间所有素数
题目描述
令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
以下是符合题目描述的C++程序,能够根据输入的M和N值输出从第M到第N的素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格:
#include <iostream>
#include <vector>
// 判断一个数是否为素数
bool isPrime(int num) {
if (num <= 1) return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) return false;
}
return true;
}
// 获取第M个到第N个数之间的所有素数
std::vector<int> getPrimesBetween(int M, int N) {
std::vector<int> primes;
int count = 0;
int num = 2;
while (count < N) {
if (isPrime(num)) {
count++;
if (count >= M) {
primes.push_back(num);
}
}
num++;
}
return primes;
}
int main() {
int M, N;
std::cin >> M >> N;
std::vector<int> primes = getPrimesBetween(M, N);
for (size_t i = 0; i < primes.size(); i++) {
if (i > 0 && i % 10 == 0) {
std::cout << std::endl;
}
if (i % 10 != 0) {
std::cout << " ";
}
std::cout << primes[i];
}
std::cout << std::endl;
return 0;
}程序说明
isPrime函数用于判断一个数是否为素数。getPrimesBetween函数用于获取第M个到第N个数之间的所有素数。main函数中,读取输入的M和N值,调用getPrimesBetween函数获取素数列表,并按照每行最多10个数字的格式输出结果。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:C语言递归求阶乘
- 下一篇:C语言:请定义一个宏,求两个数的最大值
