Calkin-Wilf分数インデックス
分数3/2はCalkin-Wilf列の5番目で、根1/1から2段下にあります。分子と分母が1から100万までの既約分数を入力すると、正確な位置と深さが分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- A
- 3
- B
- 2
- 分数
- 3/2
- 添字
- 5
- 深さ
- 2
- Gcd
- 1
Calkin-Wilf木は、すべての正の有理数を既約分数 a 対 b としてちょうど一度ずつ列挙します。離散数学・枚挙組合せ・連分数を学ぶ方は、その系列における与えられた分数のインデックス(a/b を持つ木ノードの幅優先ラベル)をしばしば必要とします。本機能は正の整数 a と b を受け取り、分数がすでに既約であることを確認し、1始まりの Calkin-Wilf インデックスと根 1/1 からの経路深さを返します。
Calkin-Wilf系列が各既約分数に割り当てるもの
Calkin-Wilf木は根付き二分木で、根のラベルは 1 対 1 です。ラベル a 対 b のノードの左の子は a 対 a プラス b、右の子は a プラス b 対 b です。正の有理数は既約形で書いたときちょうど一つのノードに現れます。
そのため列挙は Q-plus の完全な一覧であり、2/4 のような同値を巡る多値の道ではありません。木を自然なヒープ順(根のインデックス1、n の左の子は 2n、右の子は 2n+1)で読むと Calkin-Wilf 系列が得られます:1/1、1/2、2/1、1/3、3/2、2/3、3/1、…。
既約な組 a と b が与えられると、本ツールは親規則を繰り返し適用して a/b から根へ至る一意の経路を再構成します。a が b より小さければ左の子であり親は a 対 b マイナス a、a が b より大きければ右の子であり親は a マイナス b 対 b です。その経路を二進インデックスとして符号化すれば、木全体を生成せずに系列上の位置が得られます。
深さは根からの辺の数で、密な二進ラベルより高さが重要なときに役立ちます。写像は既約正数上で全単射なので、約分していない分数のインデックスを求めると一意性が崩れます。
活用例
授業と宿題の確認
学習者に既約な a と b を提出させ、1始まりの Calkin-Wilf インデックスと経路深さを教科書の木の図と照合させます。
試験と LMS 自動採点
黙って約分せず未約分を拒否する決定的オラクルで、Calkin-Wilf インデックス問題を採点します。
研究ノートと全単射デモ
完全な計算機代数ライブラリを埋め込まず、スクリプトで Calkin-Wilf ラベル付けにより正有理数を自然数へ写します。
よくある質問
分数 a/b の Calkin-Wilf インデックスを得るには?
gcd(a,b)=1 の正の整数 a と b を送ってください。
分数が既約でない場合はどうなりますか?
Calkin-Wilf ラベルは既約正数に対して一意です。未約分は拒否され課金されません。先に約分してから再試行してください。
インデックスは0始まりですか、1始まりですか?
1始まりです。 1/1 はインデックス1、1/2 は2、2/1 は3で、木の通常のヒープ番号付けに一致します。
Stern-Brocot 木との違いは何ですか?
どちらも正数を列挙しますが、子の規則と順序が異なります。本機能は Calkin-Wilf インデックスのみを返します。
分数の深さは何を表しますか?
根1/1からその分数までの段数を数えたものです。3/2は1/2の右の子で、1/2は根の左の子なので、深さは2になります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/numth/calkin-wilf-index \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":3,"b":2}'const res = await fetch("https://api.kit.forhosting.com/numth/calkin-wilf-index", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 3,
"b": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/calkin-wilf-index",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 3,
"b": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/calkin-wilf-index", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":3,"b":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":3,"b":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/calkin-wilf-index", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"a": 3,
"b": 2
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.calkin_wilf_index",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
既約でない入力は invalid_input で失敗し、位置と既約正数の間の全単射が厳密に保たれます。
Calkin-Wilf系列が各既約分数に割り当てるもの
したがって API は gcd が1より大きい場合を拒否し、黙って約分して別ラベルの位置を返すことはしません。
入力契約、応答の形、エラー時の振る舞い
値は1以上100万以下で、Worker 上の経路コストを抑えます。解析後、ハンドラは a と b の gcd を計算し、それがちょうど1でなければ、既約でない旨と a を g で割った値 対 b を g で割った値への示唆を含むメッセージで失敗します。その失敗は課金されません。3/2 は 1/2 の右の子であり、1/2 は根の左の子だからです。図が必要ならご自身の木の描画と組み合わせてください。必須の正の整数二つ、分子 a と分母 b を含む JSON 本体を POST してください。a には alias として numerator・num・p、b には denominator・den・q が使えます。各欄は JSON 数または整数の十進文字列でよく、先頭ゼロ・分数・指数表記・0・負数は該当欄名付きで invalid_input になります。成功時は a と b、三スラッシュ二等の fraction 文字列、安全整数に収まるときは JSON 数・収まらないときは十進文字列の index、根からの深さ、gcd=1、左右の子規則を述べる短い formula を返します。例:a=3 かつ b=2 なら fraction は 3/2、index は5、depth は2です。本エンドポイントはインデックスと深さのみを返し、同じ規則で再計算できる以上の中間親の一覧は出しません。
Calkin-Wilf分数インデックス API が役立つ場面
離散数学の授業やコンテスト対策プラットフォームでは、学習者が大きな木を手描きせず任意の既約有理数の位置を確認できるよう、Calkin-Wilf 分数インデックス計算を使います。超二進表現や Minkowski の疑問符に関連する写像、N と Q-plus の全単射を調べる研究ノートには、黙って約分して教科書定義からずれるのではなく、未約分入力を拒む決定的オラクルが必要です。教材生成器や LMS 自動採点は、3/2 や 5/8 のインデックスを問う設問を公開の基本料金 $0.002 での1回の API 呼び出しで採点でき、無効な gcd の場合は課金されません。
技術的な質問
Calkin-Wilf 分数インデックス計算の料金は?
ブラウザツールは無料です。API リクエストは成功した呼び出しごとに前払い KIT 残高から $0.002 です。無効な入力は課金されません。