在此示例中,您將學(xué)習(xí)如何計算用戶輸入的兩個數(shù)字的LCM(最小公倍數(shù))。
要理解此示例,您應(yīng)該了解以下C語言編程主題:
兩個整數(shù)n1和n2的LCM是最小的正整數(shù),可以被n1和n2完全整除(沒有余數(shù))。 例如,72和120最小公倍數(shù)(LCM)為360。
#include <stdio.h> int main() { int n1, n2, min; printf("輸入兩個正整數(shù): "); scanf("%d %d", &n1, &n2); //n1和n2之間的最大值存儲在min內(nèi) min = (n1 > n2) ? n1 : n2; while (1) { if (min % n1 == 0 && min % n2 == 0) { printf("%d和%d的LCM是%d。", n1, n2, min); break; } ++min; } return 0; }
輸出結(jié)果
輸入兩個正整數(shù): 72 120 72和120的LCM是360。
在此程序中,用戶輸入的整數(shù)分別存儲在變量n1和中n2。
n1和n2的最大值存儲在min中,兩個數(shù)的LCM不能小于min。
while循環(huán)的測試表達(dá)式始終為真。
在每次迭代中,檢查min是否能被n1和n2完全整除。
if (min % n1 == 0 && min % n2 == 0) { ... }
如果這個測試條件不為真,那么min將遞增1,并繼續(xù)迭代,直到If語句的測試表達(dá)式為真為止。
也可以使用以下公式找到兩個數(shù)字的LCM:
LCM = (num1*num2)/GCD
了解如何在C語言編程中找到兩個數(shù)字的GCD。
#include <stdio.h> int main() { int n1, n2, i, gcd, lcm; printf("輸入兩個正整數(shù): "); scanf("%d %d", &n1, &n2); for (i = 1; i <= n1 && i <= n2; ++i) { // 檢查i是否是兩個整數(shù)的因數(shù) if (n1 % i == 0 && n2 % i == 0) gcd = i; } lcm = (n1 * n2) / gcd; printf("兩個數(shù)字%d和%d的LCM為%d。", n1, n2, lcm); return 0; }
輸出結(jié)果
輸入兩個正整數(shù): 78 150 兩個數(shù)字78和150的LCM為1950。