1. 程式人生 > 實用技巧 >寫兩個函式,分別求兩個整數的最大公約數和最小公倍數,用主函式呼叫這兩個函式,並輸出結果。兩個整數由鍵盤輸人

寫兩個函式,分別求兩個整數的最大公約數和最小公倍數,用主函式呼叫這兩個函式,並輸出結果。兩個整數由鍵盤輸人

寫兩個函式,分別求兩個整數的最大公約數和最小公倍數,用主函式呼叫這兩個函式,並輸出結果。兩個整數由鍵盤輸人

題目解析:

該題直接使用“輾轉相除法”來求解最大公約數和最小公倍數

最大公約數找出兩數中的最小值,然後直接相模,當能夠同時被兩數整除時,則為最大公約數。

最小公倍數找出兩數中的最大值,然後直接進入死迴圈,直到找到一個數能夠同時被兩數整除時,則為最小公倍數

【注】此題還有一些比較高階的解法,比如求最大公約數的相減法、歐幾里德輾轉相除法等,有興趣的同學可以查詢相關資料

程式碼示例:

#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;
}

執行結果: