已知正整数n是两个不同的质数的乘积,试求出较大的那个质数。用c++
时间: 2024-09-21 21:10:35 浏览: 148
在C++中,如果你想要找出两个不同的质数,已知它们的乘积是给定的一个正整数n,你可以使用一个简单的算法。首先,你需要找到所有小于√n的质数,然后检查这些质数两两相乘是否等于n,如果是,则较大的质数就是这两个数中的较大者。
以下是基本的步骤:
```cpp
#include <iostream>
#include <cmath>
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 findLargestPrime(int n) {
int largest_prime = -1;
for (int i = 2; i * i <= n; ++i) { // 只需要检查到 √n
if (isPrime(i)) {
if (n % i == 0) { // 如果i能整除n
int smaller_prime = n / i; // 另一个小于n的因子
if (isPrime(smaller_prime)) { // 两者都是质数
largest_prime = std::max(i, smaller_prime);
}
}
}
}
return largest_prime;
}
int main() {
int n;
std::cout << "请输入一个正整数:";
std::cin >> n;
int result = findLargestPrime(n);
if (result != -1)
std::cout << "较大的质数是:" << result << std::endl;
else
std::cout << "无法找到满足条件的两个质数." << std::endl;
return 0;
}
```
当你运行这个程序并输入一个正整数,它会返回较小的那个质数,因为题目要求是两个不同的质数,所以结果不会超过√n。如果找不到这样的两个质数,函数将返回-1。
阅读全文