求最大公約數也可以用遞歸實現 ...
/*
求最大公約數和最小公倍數 編寫程式,在主函數中輸入兩個正整數 a,b,調用兩個函數 fun1() 和 fun2(),分別求 a 和 b 的最大公約數和最小公倍數,在主函數中輸出結果。 */ #include <stdio.h> int fun1(int a,int b); int fun2(int a,int b); int main() { int a = 0, b = 0, gcd = 0, lcm=0; scanf("%d,%d", &a, &b); gcd = fun1(a, b); lcm = fun2(a, b); printf("最大公約數:%d\n", gcd); printf("最小公倍數:%d\n", lcm); system("pause"); return 0; } //最大公約數 = 小數 與 (大數%小數) 的最大公約數
//若a<b,經過一次輾轉相除後,a,b的值會互換,所以不需要考慮a,b誰大
int fun1(int a,int b) { int gcd = 0,r = 0;while (b != 0)//輾轉相除法 { r = a % b; a = b; b = r; } gcd = a; return gcd; } //最小公倍數 = 兩數相乘 / 最大公約數 int fun2(int a,int b) { int lcm = 0,gcd=0; gcd = fun1(a, b); lcm = a * b / gcd; return lcm; }
求最大公約數也可以用遞歸實現
int f( int m, int n) { if(m%n==0) return n; else return f(n, m%n); }