题目

一个数的质因子有哪些
解法1
点击查看代码
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
struct Factor {
int prime;
int count;
};
vector<Factor> primeFactors(long int N) {
vector<Factor> factors;
if (N == 1) {
factors.push_back({1, 1});
return factors;
}
for (int i = 2; i <= sqrt(N); ++i) {
if (N % i == 0) {
int cnt = 0;
while (N % i == 0) {
N /= i;
cnt++;
}
factors.push_back({i, cnt});
}
}
if (N > 1) {
factors.push_back({N, 1});
}
return factors;
}
int main() {
long int N;
cin >> N;
vector<Factor> factors = primeFactors(N);
cout << N << "=";
for (int i = 0; i < factors.size(); ++i) {
if (i != 0) {
cout << "*";
}
cout << factors[i].prime;
if (factors[i].count > 1) {
cout << "^" << factors[i].count;
}
}
return 0;
}
浙公网安备 33010602011771号