2つの分数の媒介分数計算ツール
2つの分数の媒介分数は、分子同士を足して新しい分子を作り、分母同士を足して新しい分母を作ることで求めます。この計算ツールは結果を約分したり変更したりせず、その演算をそのまま実行します。2つの分数を表す4つの整数を入力すると、分子、分母、読みやすい分数表記を返します。入力したどちらかの分母がゼロの場合はエラーになります。
無料で実行
媒介分数の計算方法
第1の分数を a/b、第2の分数を c/d とすると、媒介分数は (a + c)/(b + d) です。aを第1分子、bを第1分母、cを第2分子、dを第2分母として入力してください。計算ツールは分子と分母を別々に加算し、2つの和と整形済みの分数を返します。たとえば、1/3 と 2/5 の媒介分数は 3/8 です。これは 1 + 2 が3、3 + 5 が8になるためです。この演算は通常の分数の加算とは異なります。1/3 と 2/5 の加算には共通分母が必要で結果は 11/15 ですが、媒介分数は 3/8 です。返り値を約分しないのは、分子と分母の直接の和そのものが媒介分数の定義であり、結果の作られ方を示すからです。各分母がゼロでなく、すべてが安全な整数であれば、負の分子や分母も使用できます。
結果が表すもの
分母が正である2つの正の分数について、値が異なる場合、その媒介分数は両者の間に厳密に位置します。この性質により、区間内の有理数を見つける用途に役立ちます。Farey数列とStern–Brocot木では、媒介分数を使って有理数を整理し、より精密な境界を生成します。返される分子と分母は各成分をそのまま足した値であり、既約分数とは限りません。1/2 と 3/4 を入力すると、数値としては 2/3 と同じでも、結果は 4/6 です。演算を学ぶ場合、木の経路を追う場合、手計算を確認する場合には、4/6を保持することに意味があります。両者の間に位置する性質は正の分母を前提としますが、算術上の定義では符号付き入力も扱えます。また、有効な2つの分母の和がゼロになる場合、エラー条件は元の各分母に個別に適用されるため、分母ゼロの形式的な媒介分数を返します。
検証とAPIの確実な利用方法
4つのフィールドには、JavaScriptで正確に表現できる整数を指定する必要があります。小数、数字の文字列、欠損値、無限大、安全範囲外の整数は、丸めたり暗黙に変換したりせず拒否します。第1分母と第2分母は個別に検証され、どちらかがゼロなら無効入力エラーになります。検証後に行う処理は2回の加算だけなので、同じリクエストは常に同じJSONを返し、ネットワーク、保存状態、時刻、乱数には依存しません。APIクライアントには numerator、denominator、fraction の各フィールドが返ります。個別の数値フィールドは後続計算に使いやすく、分数文字列は表示や記録にそのまま利用できます。個別には安全な2つの整数でも、その和が安全範囲を超える場合があります。その場合は正確性を守るためエラーになります。自動処理では1リクエスト $0.002 で利用でき、同じ決定的な計算をブラウザーでも実行できます。
活用例
Stern–Brocot木を調べる
木の有理数をたどりながら、隣接する2つの境界の間にある分数を生成します。
整数論の演習を確認する
媒介分数を通常の分数加算と混同せず、分子と分母の和を検算できます。
有理数の境界を細かくする
厳密探索や近似の途中で、2つの正の有理数境界の間に新しい候補を作ります。
よくある質問
a/b と c/d の媒介分数は何ですか?
(a + c)/(b + d) です。分子同士を足し、分母同士も足します。
媒介分数は2つの分数の加算と同じですか?
いいえ。通常の加算は共通分母を使いますが、媒介分数では分母の和を使います。
結果は約分されますか?
いいえ。媒介分数の構成を直接示すため、加算後の分子と分母をそのまま保持します。
入力する分母をゼロにできますか?
できません。第1または第2の分母がゼロの場合、無効入力エラーになります。
負の整数を使用できますか?
はい。安全な負の整数も使えますが、一般的な順序の性質は正の分母を前提とします。
APIリクエストの料金はいくらですか?
APIは1リクエスト $0.002 です。同じ決定的な計算をブラウザーでも実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/numth/mediant-fraction \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"first_numerator":1,"first_denominator":3,"second_numerator":2,"second_denominator":5}'const res = await fetch("https://api.kit.forhosting.com/numth/mediant-fraction", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"first_numerator": 1,
"first_denominator": 3,
"second_numerator": 2,
"second_denominator": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/mediant-fraction",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"first_numerator": 1,
"first_denominator": 3,
"second_numerator": 2,
"second_denominator": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/mediant-fraction", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"first_numerator":1,"first_denominator":3,"second_numerator":2,"second_denominator":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"first_numerator":1,"first_denominator":3,"second_numerator":2,"second_denominator":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/mediant-fraction", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"first_numerator": 1,
"first_denominator": 3,
"second_numerator": 2,
"second_denominator": 5
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.mediant_fraction",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |