非递归方法:
#include <iostream> #include <vector> using namespace std; void primeFactors(int n) { vector<int> factors; for (int i = 2; i <= n; i++) { while (n % i == 0) { factors.push_back(i); n /= i; } } for (int i = 0; i < factors.size(); i++) { cout << factors[i]; if (i != factors.size() - 1) { cout << " * "; } } } int main() { int n; cout << "Enter a number: "; cin >> n; cout << "Prime factors of " << n << " are: "; primeFactors(n); return 0; }
递归方法:
#include <iostream> using namespace std; void primeFactors(int n, int i) { if (n <= 1) { return; } while (n % i != 0) { i++; } cout << i; if (n != i) { cout << " * "; } primeFactors(n / i, i); } int main() { int n; cout << "Enter a number: "; cin >> n; cout << "Prime factors of " << n << " are: "; primeFactors(n, 2); return 0; }