エジプト分数計算機
エジプト分数計算機は、分子と分母を受け取り、古代エジプトの書記が行ったように、分数を 1/2 + 1/4 のような異なる単位分数の和として書き直します。必ず終了し、分母がすべて異なることを保証する、フィボナッチ–シルベスターの貪欲アルゴリズムを使用しています。正の整数を2つ送信すると、展開、項数、および分数が仮分数の場合の整数部分が返されます。同じコードがこのページ上のブラウザで無料で実行され、APIを呼び出す場合は1リクエストあたり$0.002かかります。
無料で実行
エジプト分数とは何か、なぜ今でも重要なのか
古代エジプトの数学は、一般的な分数をほぼ完全に避けていました。3/4 と書く代わりに、書記は 1/2 + 1/4 と記しました。これは分子がすべて1で分母が互いに異なる単位分数の和です。リンド・パピルスは、2/n という形の分数についてまさにこれを行う長い表から始まります。単位分数展開の表が当時の日常的な計算道具だったからです。今日、このアイデアは単なる好奇心以上のものです。単位分数展開は数論、公平な分割の問題、分数の等価性の教育、レクリエーション数学に登場します。エジプト分数計算機は、お客様が与える任意の正の有理数について、この分解を即座に再現します。正の整数である分子と分母を指定すると、サービスは異なる分母のリスト、和として書き出された展開、項数、および分数が1より大きい場合の整数部分を個別に返します。展開が正準となるよう、分数は最初に既約分数に約分されます。2/4 と 3/6 はどちらも 1/2 に展開されるため、入力の書き方に関係なく結果は安定して比較可能です。
貪欲アルゴリズムが展開を構築する仕組み
エンジンは、フィボナッチに帰属されることが多く、シルベスターが研究した貪欲法を使用します。各ステップで、残りを超えない最大の単位分数を取ります。残りが n/d の場合、次の項は 1/ceil(d/n) です。その項を引くと n*ceil(d/n) − d / (d*ceil(d/n)) が残り、新しい分子は前の分子より厳密に小さくなるため、プロセスは最大 n ステップで必ず終了します。嬉しい副作用として、選ばれる分母は毎回前のものより大きくなるため、相異性は事後確認ではなく構造上保証されます。実装は任意精度整数で動作するため、1兆までの値を正確に処理し、計算中の浮動小数点の丸めは一切ありません。項数には宣言された上限があり、それを超える入力は無制限に実行されるのではなく、明確なエラーで拒否されます。展開は決定的であるため、同じ入力は常にバイト単位で同一の出力を返し、結果を比較するキャッシュやパイプラインに安全に組み込めます。
出力の読み方とエッジケースの扱い
レスポンスには、約分された展開と元の入力が含まれるため、クライアントは何が分解されたかを正確に記録できます。unit_fractions フィールドには分母が昇順で格納され、expansion は 1/2 + 1/11 + 1/111 + 1/1221 のような読みやすい和として表示し、count は単純に項数です。仮分数の場合、整数部分は whole に個別に返され、単位分数は分数の残余部分のみを展開します。古典的なエジプトの表記法では整数を和の外に置いていたからです。検証は意図的に厳格です。分母のゼロは拒否され、2.5 や文字列の 1/2 のような非整数値は拒否され、負の入力も拒否されます。それぞれ、問題のあるフィールドを指名するメッセージが付きます。APIの呼び出しは1リクエストあたり$0.002で、同じアルゴリズムがこのページのブラウザウィジェットで無料で実行されるため、対話的に試して、自動化するときだけお支払いいただけます。すべては要求時に計算され、送信された内容はレスポンス生成後に保存されません。
活用例
分数の等価性を教える
5/6 を 1/2 + 1/3 として展開し、他の表現と比較することで、1つの有理数に多くの姿があることを生徒に示せます。
歴史的な数学を再現する
リンド・パピルス式の 2/n の分解を、表を手作業で作ることなく、決定的な貪欲法の基準と照合して確認できます。
パズルや練習教材を生成する
数学コンテスト、ワークシート、ゲームコンテンツ向けに、比較可能な安定した出力で単位分数の和をプログラムから生成できます。
よくある質問
料金はいくらですか?
API経由で1リクエストあたり$0.002です。同じアルゴリズムがこのページのブラウザでも無料で実行されます。
どのような入力が受け付けられますか?
正の整数2つ(分子と分母)です。分母のゼロ、負の数、小数、非数値は、明確なエラーとともに拒否されます。
展開は必ず終了しますか?
はい。貪欲アルゴリズムは各ステップで残りの分子を厳密に減らすため、必ず終了し、出力される分母はすべて異なります。
1より大きい分数の場合はどうなりますか?
整数部分は whole フィールドに個別に返され、単位分数は分数の残余部分のみを展開します。古典的なエジプトの表記法に従っています。
分数は最初に約分されますか?
はい。入力は展開前に既約分数に約分されるため、等価な分数は常に同じ展開を生成します。
何か保存されますか?
いいえ。計算はメモリ内で行われ、展開のみが返されます。お客様の入力は破棄されます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/math/egyptian-fraction \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"numerator":5,"denominator":6}'const res = await fetch("https://api.kit.forhosting.com/math/egyptian-fraction", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"numerator": 5,
"denominator": 6
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/egyptian-fraction",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"numerator": 5,
"denominator": 6
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/egyptian-fraction", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"numerator":5,"denominator":6}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"numerator":5,"denominator":6}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/egyptian-fraction", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"numerator": 5,
"denominator": 6
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.egyptian_fraction",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_value | 1000000000000 |
max_terms | 1000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |