輾轉相除法(Euclidean Algorithm)是求兩整數最大公約數(GCD)的經典演算法,最小公倍數(LCM)則可由公式 LCM = (m * n) / GCD 快速得到。
m >= n,否則交換。r = m % n。r == 0,則 n 即為 GCD。m = n, n = r,重複步驟 2~3。#include <stdio.h>
int main(void) {
int m, n, r, t, product;
printf("輸入兩整數:");
scanf("%d %d", &m, &n);
// 確保 m >= n
if (n > m) {
t = m; m = n; n = t;
}
product = m * n; // 儲存乘積供 LCM 使用
while ((r = m % n) != 0) {
m = n;
n = r;
}
printf("最大公約數:%d\n", n);
printf("最小公倍數:%d\n", product / n);
return 0;
}
輸入兩整數:48 18 最大公約數:6 最小公倍數:144
int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }m * n 可能溢位 int,大數場景請用 long long 或先除後乘:LCM = m / gcd * n。