この記事では、C言語を使用して3つの数値から最小公倍数を求める方法を紹介します。
目次から探す
最小公倍数の求め方
最小公倍数(LCM)は、与えられた数値の中で最小の倍数を求める方法です。
C言語を使用して、3つの数値から最小公倍数を求める方法を紹介します。
方法1: ユークリッドの互除法を用いる
ユークリッドの互除法は、2つの数値の最大公約数(GCD)を求めるために使用されます。
最小公倍数を求めるためには、最大公約数を利用することができます。
以下は、ユークリッドの互除法を用いて最小公倍数を求めるサンプルコードです。
#include <stdio.h>
// 最大公約数を求める関数
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
// 最小公倍数を求める関数
int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
int main() {
int num1, num2, num3;
printf("3つの数値を入力してください: ");
scanf("%d %d %d", &num1, &num2, &num3);
int result = lcm(lcm(num1, num2), num3);
printf("最小公倍数は %d です。\n", result);
return 0;
}
上記のコードでは、gcd関数
を使って最大公約数を求め、lcm関数
を使って最小公倍数を求めています。
3つの数値を入力し、最小公倍数を計算して表示します。
方法2: 最大公約数を用いる
最小公倍数を求める別の方法は、最大公約数を利用する方法です。
最大公約数を求めた後、与えられた数値の積を最大公約数で割ることで最小公倍数を求めることができます。
以下は、最大公約数を用いて最小公倍数を求めるサンプルコードです。
#include <stdio.h>
// 最大公約数を求める関数
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
int main() {
int num1, num2, num3;
printf("3つの数値を入力してください: ");
scanf("%d %d %d", &num1, &num2, &num3);
int gcd_result = gcd(gcd(num1, num2), num3);
int result = (num1 * num2 * num3) / gcd_result;
printf("最小公倍数は %d です。\n", result);
return 0;
}
上記のコードでは、gcd関数
を使って最大公約数を求め、与えられた数値の積を最大公約数で割って最小公倍数を計算しています。
方法3: 積を最大公約数で割る
最小公倍数を求めるもう一つの方法は、与えられた数値の積を最大公約数で割る方法です。
最大公約数を求めるためには、先ほど紹介したユークリッドの互除法を使用します。
以下は、積を最大公約数で割る方法を用いて最小公倍数を求めるサンプルコードです。
#include <stdio.h>
// 最大公約数を求める関数
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
int main() {
int num1, num2, num3;
printf("3つの数値を入力してください: ");
scanf("%d %d %d", &num1, &num2, &num3);
int gcd_result = gcd(gcd(num1, num2), num3);
int result = (num1 * num2 * num3) / gcd_result;
printf("最小公倍数は %d です。\n", result);
return 0;
}
上記のコードでは、gcd関数
を使って最大公約数を求め、与えられた数値の積を最大公約数で割って最小公倍数を計算しています。
以上が、C言語を使用して3つの数値から最小公倍数を求める方法の解説です。
それぞれの方法を使って最小公倍数を求めることができますので、適宜使い分けてください。