阅读量:79
非递归方法:
#include
#include
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 class="hljs-built_in">size(); i++) {
cout << factors class="hljs-keyword">if (i != factors.size() - 1) {
cout << " * ";
}
}
}
int main() {
int n;
cout << "Enter a number: ";
cin >> n;
cout << "Prime factors of " << n class="hljs-string">" are: ";
primeFactors(n);
return 0;
}
递归方法:
#include
using namespace std;
void primeFactors(int n, int i) {
if (n <= 1) {
return;
}
while (n % i != 0) {
i++;
}
cout << i class="hljs-keyword">if (n != i) {
cout << " * ";
}
primeFactors(n / i, i);
}
int main() {
int n;
cout << "Enter a number: ";
cin >> n;
cout << "Prime factors of " << n class="hljs-string">" are: ";
primeFactors(n, 2);
return 0;
}