🍣
C言語 最小公倍数と最大公約数
C 言語で 最小公倍数(LCM: Least Common Multiple) と 最大公約数(GCD: Greatest Common Divisor) を求める方法
●GCD は ユークリッドの互除法 を使うと効率的に求められます。
2つの数 a, b の GCD は b == 0 なら a が答え。
そうでないなら、GCD(b, a % b) を再帰的に求める
●GCDを求めたら、次の式で LCM を求められます。
LCM(a, b) = (a * b) / GCD(a, b)
コード例(関数で GCD と LCM を求める)
#include <stdio.h>
// 最大公約数(GCD)を求める関数(ユークリッドの互除法)
int gcd(int a, int b) {
return (b == 0) ? a : gcd(b, a % b);
}
// 最小公倍数(LCM)を求める関数
int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
int main() {
int num1, num2;
// ユーザー入力
printf("2つの整数を入力してください: ");
scanf("%d %d", &num1, &num2);
// 計算と表示
printf("最大公約数(GCD): %d\n", gcd(num1, num2));
printf("最小公倍数(LCM): %d\n", lcm(num1, num2));
return 0;
}
実行結果 ※直接入力した値からGCD・LCMを出力
2つの整数を入力してください: 12 18
最大公約数(GCD): 6
最小公倍数(LCM): 36
Discussion