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