以下是使用 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'。

C++ 算法:分解正整数为素数平方乘积

原文地址: https://www.cveoy.top/t/topic/kQl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录