最大公因数问题相信大家都遇到过,今天我来总结一下
1、枚举法
int gcd(int m,int n)
{
int i;
for( i=n;(m%i!=0)&&(n%i!=0)&&(i>=1);i--)
{}
return i;
}
时间复杂度约为O(n);
2,分解质因数
代码略
时间复杂度约为O(2*sqrt(n))~O(3*sqrt(n))
3,辗转相除法
int gcd(int m,int n)
{
return n==0?m:gcd(n,m%n);
}
时间复杂度约为O (x)
x是满足以下不等式的最小整数解
f[x+2]<=m<f[x+3]
f[i], 就是那个1,1,2,3,5,8…的数列