#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<ll>f;
void divide(int n){
// 这样写不会溢出
for(int i = 2;i <= n / i;i++){
if(n % i == 0){
int sum = 0;
while(n % i == 0){
n /= i;
sum ++;
}
cout << i << " " << sum << endl;
}
}
// 由于 n的质因子有且只有一个会大于sqrt(n)
// 反证法,如果有两个,则会大于n
if(n > 1){
cout << n << " "<< 1 << endl;
}
}
void divide_all(int n ){
for(int i = 1;i <= n / i;i++){
if(n / i == i){
f.push_back(i);
}
else{
f.push_back(i);
f.push_back(n / i);
}
}
}
int main(){
int N = 60;
divide_(N);
for(int i = 0;i < f.size();i++)
cout << f[i] << " ";
cout << endl;
divide(N);
return 0;
}
分解质因子和求所有因子
于 2022-04-06 19:53:26 首次发布