最大公约数(因数)
欧几里得算法(辗转相除法)
int gcd(int x, int y){
return !y ? x : gcd(y, x%y);
}
最小公倍数
最小公倍数定理
int lcm(int x, int y){
return x / gcd(x, y) * y;
}
分解质因数法
约数个数定理
#include <bits/stdc++.h>
using namespace std;
int prime_factor(int num, vector<pair<int, int> &p_f){ /// pair中first为质因数,second为其指数;函数返回num的约数个数(约数定理得出的计算方法)
int sum = 1;
for(int pri=2; pri<=num; pri++){
int exp;
for(exp=0; num%pri==0; num/=pri, exp++);
if(exp){
p_f.push_back({pri, exp});
sum *= exp+1;
}
}
return sum;
}
int main(){
int n;
cin >> n;
cout << prime_factor(n) << endl;
return 0;
}