C++ 给定一个正整数n(0<n<=100),随后一行有m个正整数(1<m<=100000000),对每一个m求小于等于m的最大质数。
时间: 2024-09-19 20:17:52 浏览: 42
在C++中,要解决这个问题,可以编写一个函数来检测给定数字是否为质数,并遍历每个输入的正整数。以下是大致的步骤:
首先,我们需要创建一个辅助函数`isPrime`来检查一个数是否是质数:
```cpp
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;
}
```
然后,在主函数`main`中,我们可以接受输入n和m,遍历每个m并找出小于或等于它的最大质数:
```cpp
#include <iostream>
int main() {
int n;
std::cin >> n;
// 遍历每个m
for (int m = 1; m <= n; ++m) {
int maxPrime = m;
for (int i = m - 1; i >= 2; --i) { // 只需从m-1开始检查,因为小于sqrt(m)的因子已经考虑过了
if (isPrime(i) && i > maxPrime)
maxPrime = i;
}
std::cout << "最大质数小于或等于 " << m << ": " << maxPrime << '\n';
}
return 0;
}
```
这个程序会依次计算出从1到n范围内的每个数m的最大质数。
阅读全文