非遞歸方法:
#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;
}