寫兩個函數,分別求兩個整數的最大公約數和最小公倍數,用主函數調用這兩個函數,並輸出結果。兩個整數由鍵盤輸人
題目解析:
該題直接使用“輾轉相除法”來求解最大公約數和最小公倍數
最大公約數找出兩數中的最小值,然后直接相模,當能夠同時被兩數整除時,則為最大公約數。
最小公倍數找出兩數中的最大值,然后直接進入死循環,直到找到一個數能夠同時被兩數整除時,則為最小公倍數
【注】此題還有一些比較高級的解法,比如求最大公約數的相減法、歐幾里德輾轉相除法等,有興趣的同學可以查詢相關資料
代碼示例:
#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;
}