辗转相除法,求证最小公因数
public class Demo6 {
//辗转相除法
public static void main(String[] args) {
System.out.println(gcd(15,20));
}
public static int gcd(int a,int b){
if(b==0){
return a;
}else {
return gcd(b,a%b);
}
}
}
辗转相除法,及实现原理:
a可以表示成a = kb + r(a,b,k,r皆为正整数,且r<b),则r = a mod b
假设d是a,b的一个公约数,记作d|a,d|b,即a和b都可以被d整除。
而r = a - kb,两边同时除以d,r/d=a/d-kb/d=m,由等式右边可知m为整数,因此d|r
因此d也是b,a mod b的公约数
假设d是b,a mod b的公约数, 则d|b,d|(a-k*b),k是一个整数。
进而d|a.因此d也是a,b的公约数
因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证。
摘自百度百科,没有自己证明

浙公网安备 33010602011771号