c++求第M个到第N个数之间所有素数
作者:野牛程序员:2024-07-04 11:04:20 C++阅读 2398
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语言:请定义一个宏,求两个数的最大值