最小公倍数計算機
2つの整数のどちらでも割り切れる最小の正の数を求めます。12と18の最小公倍数は36なので、12分ごとと18分ごとに動く機械は36分ごとにそろいます。最大公約数の6も表示され、ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- A
- 12
- B
- 18
- Gcd
- 6
- Lcm
- 36
浮動小数点ではなく正確な整数演算で計算するため、安全な整数範囲内であればどんな入力でも結果は正確です。計算に用いた最大公約数もあわせて返します。これは両者が不可分の関係にあるためで、LCMとGCDの積は2つの入力の絶対値の積に等しくなります。ゼロ、小数、数値以外の値は明確なエラーで拒否され、データは一切保存されません。
最小公倍数が実際に答えるもの
2つの整数の最小公倍数とは、両方の倍数である最小の正の数です。見た目は違っても実は同じ問題である一連の問いへの答えでもあります。繰り返し発生する2つの出来事がいつ重なるのか、2種類の包装にきれいに分けられる最小のロットサイズはいくつか、2つの分数を足す前に必要な共通の分母は何か。
12分周期と18分周期で動く2台の機械は36分ごとに再び同期します。36が12と18の最小公倍数だからです。長さの異なる2種類のタイルで壁を張る場合も、両方の模様の目地が初めて揃う長さが分かります。
負の入力については符号で処理されます。倍数は符号を除いて定義され、有用なのはその大きさであるため、LCMは常に正の整数として返されます。
計算の仕組みと、正確さが保たれる理由
計算は最大公約数を経由します。ユークリッドの互除法が余りの繰り返しでGCDを求め(gcd(12, 18) は6)、恒等式 lcm(a, b) = |a / gcd(a, b) × b| からLCMが導かれます。割り算を掛け算より先に行うのは意図的です。
12を6で割ると2、2に18を掛けると36となり、先に積を膨らませずに中間値を小さく保てます。これが重要なのは、JavaScriptの整数が 2^53 − 1 までしか正確でないためです。各入力が安全な整数であること、そして結果のLCMも安全な整数であることを確認し、満たさない場合は丸めた誤った値を黙って返すのではなく、明示的なエラーで拒否します。
ゼロ、小数、非有限値、数値以外の入力も同様に拒否されます。ゼロには意味のある公倍数がなく、小数は整数演算の対象外だからです。
実務での活躍の場
この計算の日常的な居場所は、スケジューリングと製造の2つです。スケジューリングでは、2つの周期のLCMが、2つのタイマーやシフト、保守時間帯がいつ重なるかを教えてくれます。衝突を踏まえた計画の第一歩です。
製造では、2種類の部品のパッケージを端数なく使い切れる最小の生産量が求まります。開発者も内部でよく使います。分数の加算には共通の分母が必要で、最小のものを使えば計算を小さく保てます。
コード内の周期タスクの同期も同じ問いに帰着します。
活用例
2つの繰り返し予定を揃える
周期の異なる2つのサイクルが次にいつ一致するかを求めます。12分と18分のLCMは36なので、両方のイベントは36分ごとに同時に発生します。
端数の出ないロットサイズを決める
一方が24個入り、もう一方が30個入りの場合に、2種類の部品の箱をちょうど使い切れる最小の生産量を計算します。
最小の分母で分数を足す
2つの分母のLCMを共通分母として使い、分子を小さく保ちながら計算を正確に行います。
よくある質問
2つの数の最小公倍数とは何ですか?
両方の数を割り切れる最小の正の整数です。12と18の場合は36です。36は両方の倍数であり、これより小さい正の数には該当するものがないためです。
負の整数も使えますか?
はい。 符号は内部的に絶対値を取って処理されます。倍数は符号を除いて定義されるため、LCMは常に正の整数として返されます。
入力はどのくらいの大きさまで使えますか?
各入力は安全な整数(絶対値で 9007199254740991 まで)である必要があり、結果のLCMもその範囲に収まる必要があります。それより大きな結果は丸められるのではなく、明示的に拒否されます。
結果は正確ですか?
はい。 計算にはユークリッドの互除法と整数除算を用い、浮動小数点による近似は一切使いません。lcm × gcd は入力の絶対値の積に等しくなります。
最大公約数も表示されるのはなぜですか?
最小公倍数は最大公約数から求めるためです。12と18なら最大公約数は6で、12を6で割ってから18を掛けると36になります。先に割ることで、途中の数が大きくなりすぎません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/math/common-multiple \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":12,"b":18}'const res = await fetch("https://api.kit.forhosting.com/math/common-multiple", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 12,
"b": 18
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/common-multiple",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 12,
"b": 18
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/common-multiple", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":12,"b":18}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":12,"b":18}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/common-multiple", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"a": 12,
"b": 18
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.common_multiple",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_abs_value | 9007199254740991 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
この最小公倍数APIは、0でない2つの整数を受け取り、両方を割り切れる最小の正の整数を返します。APIと同じコードがこのページ上でブラウザーから無料で実行できるため、まず手元で数値を確認し、自動化する場合のみリクエストごとに $0.002 をお支払いいただく形になります。
最小公倍数が実際に答えるもの
この最小公倍数計算エンドポイントは、安全な整数範囲内の任意の2つの整数について、その値を1回の呼び出しで正確に計算します。
計算の仕組みと、正確さが保たれる理由
エンドポイントはこの境界を二重に防御します。
実務での活躍の場
このAPIはステートレスで決定論的(同じ組には常に同じ答え)なので、キャッシュにもテストの検証にも安全です。エッジ上でリクエストごとに $0.002 で動作し、同一のアルゴリズムがこのページのブラウザー上では無料で対話的に利用できます。
技術的な質問
料金はいくらですか?
リクエストごとに $0.002 です。このページ上ではブラウザーから無料でも実行できます。同じアルゴリズムで、アカウントも不要です。
なぜゼロは拒否されるのですか?
最小公倍数は0でない整数に対して定義されます。ゼロが入力に含まれると、意図した意味で両方を割り切れる正の整数が存在しないため、誤解を招く値を返すのではなく invalid_input で失敗させます。