java算法篇之欧几里得算法

欧几里得算法: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);
		}	
	}


同理:两个数的最小公倍数想必大家都会求了吧。

你可能感兴趣的:(数据结构与算法)