寫兩個函式,分別求兩個整數的最大公約數和最小公倍數,用主函式呼叫這兩個函式,並輸出結果。兩個整數由鍵盤輸人
阿新 • • 發佈:2020-07-21
寫兩個函式,分別求兩個整數的最大公約數和最小公倍數,用主函式呼叫這兩個函式,並輸出結果。兩個整數由鍵盤輸人
題目解析:
該題直接使用“輾轉相除法”來求解最大公約數和最小公倍數
最大公約數找出兩數中的最小值,然後直接相模,當能夠同時被兩數整除時,則為最大公約數。
最小公倍數找出兩數中的最大值,然後直接進入死迴圈,直到找到一個數能夠同時被兩數整除時,則為最小公倍數
【注】此題還有一些比較高階的解法,比如求最大公約數的相減法、歐幾里德輾轉相除法等,有興趣的同學可以查詢相關資料
程式碼示例:
#include<stdio.h> //最大公約數 size_t GCD(size_t a, size_t b) { size_t gcd; gcd = a > b ? b : a; while(gcd > 1) { if((a % gcd == 0) && (b % gcd == 0)) return gcd; gcd--; } return gcd; } //最小公倍數 size_t LCM(size_t a, size_t b) { size_t lcm; lcm = a > b ? a : b; while(1) { if((lcm % a==0) && (lcm % b==0)) break; lcm++; } return lcm; } int main() { size_t a, b, result; printf("請輸入兩個整數:>"); scanf("%d %d", &a, &b); result = GCD(a, b); printf("%d和%d的最大公約數為:%d\n", a, b, result); result = LCM(a, b); printf("%d和%d的最小公倍數為:%d\n", a, b, result); return 0; }