欧几里得算法:gcb(a,b)=gcb(b,a%b) 即求两个数的最大公约数。
存在两个数:a,b,且a>b 。
那么必有a=kb+r, 所以r=a%b;
假设两个数的最大公约数为d,则r=xd-ykd ----》r=(x-yk)*d 。
可以得出d必是r的公约数。
因为r=a%b
所以gcb(a,b)=gcb(b,r)=gcb(b,a%b).
public static int euclid(int a ,int b){
if(b==0)
return a;
else{
int temp=b;
b=a%b;
a=temp;
return euclid(a, b);
}
}
同理:两个数的最小公倍数想必大家都会求了吧。