最大公约数(因数)
欧几里得算法(辗转相除法)
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;
}
本文介绍了计算最大公约数(欧几里得算法)、最小公倍数(利用最大公约数计算)以及质因数分解的方法,并提供了C++实现。通过这些基础数学概念,读者可以更好地理解和应用数论在编程中的实践。
1672

被折叠的 条评论
为什么被折叠?



