1. 程式人生 > >輾轉相除法(gcd)求最大公約數

輾轉相除法(gcd)求最大公約數

輾轉相除法, 又名歐幾里德演算法(Euclidean algorithm),縮寫為GCD,是求最大公約數的一種方法。它的具體做法是:用較小數除較大數,再用出現的餘數(第一餘數)去除除數,再用出現的餘數(第二餘數)去除第一餘數,如此反覆,直到最後餘數是0為止。如果是求兩個數的最大公約數,那麼最後的除數就是這兩個數的最大公約數。

還有一個是LCM 求最小的公倍數,其實知道了最大公約數的求法後,這個很簡單。直接用A乘以B然後在除以最大公約數就可以了。

大概的流程圖為下,這個流程圖思路也是很清晰的。

直接看C語言程式碼

#include<stdio.h>
int  gcd(int a,int b)
{
	int r;//儲存餘數。
	r=a%b;
	if(r==0)
	return b;
	else
	{
		gcd(b,r);
	 } 
}
int lcm(int a,int b)
{
	return (a*b)/gcd(a,b);
}
int main()
{
	int a,b;
	a=12;
	b=8;
	printf("%d和%d的最大公約數為:%d\n",a,b,gcd(a,b));
	printf("%d和%d的最小公倍數為:%d\n",a,b,lcm(a,b));
	return 0;
 }