欧几里得算法原理
欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。
gcd(a,b)=gcd(b,a mod b);
欧几里得算法证明过程
a可以表示成a = kb + r,则r = a mod b
假设d是a,b的一个公约数,则有
d|a, d|b,而r = a - kb,因此d|r
因此d是(b,a mod b)的公约数
欧几里得算法核心代码
public static long gcd(long m,long n){
while(n != 0){
long rem = m%n;
m = n;
n = rem;
}
return m;
}
欧几里得算法简写形式:
int gcd(int a,int b)
{return b?gcd(b,a%b):a;}