輾轉相除法(gcd)求最大公約數
阿新 • • 發佈:2018-11-12
輾轉相除法, 又名歐幾里德演算法(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; }