C++ 算法:分解正整数为素数平方乘积
以下是使用 C++ 解决将正整数分解为素数平方乘积问题的代码:
#include <iostream>
#include <vector>
using namespace std;
// 判断是否为素数
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;
}
// 找出p和q
void findPQ(int n) {
vector<int> primes;
// 寻找素数
for (int i = 2; i <= n; i++) {
if (isPrime(i)) {
primes.push_back(i);
}
}
for (int i = 0; i < primes.size(); i++) {
int p = primes[i];
int q = n / (p * p);
if (isPrime(q) && p != q) {
cout << p << ' ' << q << endl;
return;
}
}
cout << 'No solution found' << endl;
}
int main() {
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
findPQ(n);
}
return 0;
}
使用上述代码,你可以输入样例数量 t,然后依次输入 n 的值。对于每个 n,程序将找到满足 n = p^2 * q 的两个不同素数 p 和 q,并输出它们。如果找不到满足条件的 p 和 q,将输出'No solution found'。
原文地址: https://www.cveoy.top/t/topic/kQl 著作权归作者所有。请勿转载和采集!