最小公分母計算ツール
2つの分数が共有できる最も小さい分母を求めます。12と18なら36なので、5/12と7/18は15/36と14/36になり、そのまま足せます。使った最大公約数の6も表示されます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- A
- 12
- B
- 18
- 分母 a
- 12
- 分母 b
- 18
- Gcd
- 6
- Lcd
- 36
12と18を入力すれば36を返し、そこに至るまでに使った最大公約数も一緒に返します。計算はユークリッドの互除法による古典的な最小公倍数で、決定的かつ正確で、すべて整数演算で行われるため浮動小数点誤差はありません。グローバルなエッジネットワーク上で動作し、このページでは同じコードがブラウザで無料で実行されるため、自動化して呼び出す場合にのみ料金が発生します。
最小公分母とは何か
2つの分数は、分母を共有して初めて直接足したり比較したりできます。2つの分母の公倍数ならどれでも使えますが、最小公分母——最も小さいもの——を使うと、その後の数値がすべて小さく保たれ、計算が扱いやすくなります。分母が12と18の場合、公倍数には36、72、108、そしてそれ以降の36の倍数がすべて含まれますが、最小は36です。
したがって5/12と7/18は15/36と14/36になり、1ステップで足すことができます。72のような大きな公倍数を選ぶのは間違いではありませんが、無駄です。結局、最終結果を約分することになるからです。
また、2つの分母の最大公約数も返します。これら2つの量は同じ関係の2つの見方だからです。最小公分母は分母の積を最大公約数で割ったものであり、両方の数が手元にあれば、2回目の呼び出しをせずに元の各分数を新しい分母に書き直すのは簡単です。
計算の仕組み
エンジンはユークリッドの互除法で2つの分母の最大公約数を計算します。余りがゼロになるまで、大きい方の数を除算の余りで繰り返し置き換えます。必要なステップ数は入力の対数に比例するため、非常に大きな分母でも即座に解けます。
最小公分母は、最初の分母をその最大公約数で割り、2番目の分母を掛けたものです。掛ける前に割ることで中間値をできるだけ小さく保ち、不要なオーバーフローを防ぎます。すべて整数演算で行われ、浮動小数点は一切使わないため、答えは近似的に正しいのではなく厳密に正確です。
入力は算術の前に厳密に検証されます。丸められた分母は答えがないより悪いからです。
実務での使いどころ
プログラムで分数を扱うものは、遅かれ早かれこのプリミティブを必要とします。
分数の問題を生成・採点する教育ソフトウェア、分数で表された分量をスケーリングするレシピや栄養ツール、10進近似ではなく厳密な有理数を保持する工学ノート、異なる長さのサイクルを揃えるスケジューリングや音楽理論のコード——2つのサイクルを揃えることは、変装した同じ最小公倍数問題だからです。サイトでは動くのに本番で違う」という種類の驚きをまるごと排除できます。
呼び出しはステートレスで、何も保存されません。分母が届き、答えが返り、入力の記録は残りません。
活用例
分数の宿題を採点する
教育アプリは、学生の合計が期待される分数と一致するか確認する前に、両方の答えを最小公分母に書き直します。
レシピを正確にスケーリングする
料理ツールは、3/4カップと2/3カップの計量を両方12分の1に変換して組み合わせ、浮動小数点演算には一切触れません。
2つの繰り返しサイクルを揃える
スケジューラは、12日タスクと18日タスクが次に同じ日に重なるのはいつかを求めます。公分母の元となる同じ最小公倍数です。
よくある質問
結果は正確ですか?
はい。 すべてユークリッドの互除法による整数演算で計算されるため、結果のどこにも浮動小数点の丸めはありません。
分母は保存されますか?
いいえ。 呼び出しはステートレスで、入力は処理後に破棄され、結果だけが返されます。
最小公分母はどんなときに使いますか?
分母の異なる分数を足したり引いたり、大きさを比べたりする前に使います。分母がそろえば、分子どうしをそのまま計算したり比べたりできるようになります。
最小公分母はどのように計算されますか?
まずユークリッドの互除法で2つの分母の最大公約数を求め、1つ目の分母をそれで割ってから2つ目の分母を掛けます。12と18なら最大公約数は6で、12÷6×18で36になります。
72のような大きい公倍数を使ってはいけませんか?
間違いではありませんが、途中の数が大きくなり、最後に約分する手間が増えます。最小公分母を使えば、数を小さく保ったまま計算できます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/math/common-denominator \
-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-denominator", {
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-denominator",
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-denominator", 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-denominator", 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_denominator",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
最小公分母APIは、2つの分数の分母を受け取り、両方を割り切れる最小の正の整数を返します。これは、それらの分数を足したり引いたり比較したりする前に必要な数です。
最小公分母とは何か
このエンドポイントはその最小値を直接返すので、呼び出し側が倍数を列挙したり、膨らんだ結果を約分したりする必要はありません。
計算の仕組み
各分母は正の整数でなければならず、ゼロ、負数、分数、数値でない文字列、欠落フィールドはすべて、課金されることのない明確な無効入力エラーで拒否されます。真の最小公分母がプラットフォームの安全な整数範囲を超える場合、エンドポイントは丸めた値を黙って返すのではなく明示的にエラーを返します。
実務での使いどころ
API経由では1要素あたり$0.002で、何千もの分数ペアを処理するホットループに入れても十分安く、時々の手動利用はブラウザで永久に無料です。
技術的な質問
料金はいくらですか?
API経由で1回につき$0.002です。同じ計算ツールはこのページのブラウザで無料で使えます。
どんな入力を期待しますか?
aとbの2つのフィールドで、それぞれが1つの分数の分母です。両方とも正の整数である必要があります。
無効な入力とは何ですか?
ゼロ、負の数、整数でない数、数値でない文字列、欠落しているフィールドです。無効な入力はinvalid_inputエラーで拒否され、課金されることはありません。
分母が非常に大きい場合は?
アルゴリズム自体は非常に大きな整数も即座に処理します。最小公分母がプラットフォームの安全な整数範囲を超える場合、エンドポイントは丸めた値ではなく明示的なエラーを返します。