已知正整数n是两个不同的质数的乘积,试求出最大的那个质数用C++代码解决
时间: 2024-09-21 18:10:40 浏览: 50
三级网络技术 上机试题 计算最大值
为了找出两个不同质数的乘积等于给定正整数 `n` 的最大质因子,我们可以从 `n` 开始除以每个质数,直到找到第一个能整除 `n` 的质数。这个质数就是我们所需的其中一个,然后我们可以再次检查剩下的 `n` 除以该质数的结果,继续找下一个质因子。
以下是使用 C++ 实现的一个简单示例:
```cpp
#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;
}
// 找到最大质因子的函数
int findMaxPrimeFactor(int n) {
int max_prime = -1;
for (int i = 2; i * i <= n; ++i) { // 遍历小于sqrt(n)的所有整数
if (isPrime(i) && n % i == 0) {
max_prime = i;
while (n % i == 0) { // 更新n至其除以最大质因子后的结果
n /= i;
}
}
}
// 如果n本身是一个大于1的质数,还没找到更小的质因数
if (n > 1 && isPrime(n))
max_prime = n;
return max_prime;
}
int main() {
int n;
std::cout << "请输入一个正整数: ";
std::cin >> n;
if (n <= 1) {
std::cerr << "输入错误,需要大于1的正整数." << std::endl;
return 1;
}
int max_prime = findMaxPrimeFactor(n);
std::cout << "最大的质因子是: " << max_prime << std::endl;
return 0;
}
```
阅读全文