辺からピタゴラス数
直角をはさむ1辺を入力すると、その辺を共有する整数の直角三角形をすべて求めます。辺20には20-15-25から20-99-101まで4通りの相手があります。各組には原始的かどうかの印が付き、もう一方の辺の順に並びます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- Leg
- 20
- 数量
- 4
ピタゴラス数の組とは、a² + b² = c² を満たす正の整数の三つ組 (a, b, c) のことです。整数辺の直角三角形の三辺に対応します。授業やコンテスト、見本の直角三角形の生成では、既知の一辺だけから始めて、どの整数の相手が方程式を完成させるかを問うことがよくあります。この機能は一辺の長さを受け取り、一致する組をすべて返します。固定した辺、対応するもう一方の辺、斜辺、および原始的かどうかです。
固定した辺から見たピタゴラス数の組の意味
直角三角形の一辺 a を固定し、もう一方の辺 b と斜辺 c も正の整数であることを求めるとき、その a を一定にした a² + b² = c² のすべての解を求めています。最小の組はよく知られた 3-4-5 の族です。三以上の整数の辺は少なくとも一つの組に現れ、複数に現れることもあります。
解の一部は原始的で、gcd(a, b, c) が 1 に等しく、他は 3-4-5 から得た 6-8-10 のように、より小さい組の整数倍です。教科書は原始的な相手だけを求めることもありますが、作図問題、画素単位の直角、整数格子上の経路では完全な一覧が必要なことが多いです。
手作業での列挙は a² + b² が完全平方になる b を探すことになり、a が大きくなると煩雑で中間の相手を落としやすくなります。探索を自動化すれば、一覧は完全で順序付きのまま、パイプラインの次工程、宿題の採点、見本の幾何データの生成にすぐ使えます。
機能が一致する組をすべて見つける方法
leg は三以上で百万以下の正の整数です。代数的には a² + b² = c² は c² − b² = a²、すなわち (c − b)(c + b) = a² に変形できます。
エンジンは a² の正の約数対 (d, e) をすべて走査し、d = c − b、e = c + b、d は e より小さく、d と e が同じ偶奇性を持つ場合に b と c が整数になります。b は (e − d) を 2 で割った値、c は (e + d) を 2 で割った値です。
有効な各対は、要求された辺に等しい a をもつ三つ組 (a, b, c) になります。エンジンは gcd(a, b, c) が 1 かどうかも記録するので、原始的な組と倍率付きの組を二度目の処理なしで区別できます。乱数も時計依存もネットワーク呼び出しもありません。
利用場面と料金
典型的な用途には、固定した a について a² + b² = c² の整数解をすべて列挙した生徒の答えの照合、幾何デモ用の原始的・非原始的な直角三角形の生成、正確な直角が必要なグラフィックスや CNC 経路向けの整数座標対の用意、与えられた一辺を共有する格子上の直角三角形の全族の記録があります。ブラウザ経路はローカルで動き、アカウントは不要です。
leg を文書化された範囲内に保てば a² 上の約数走査は予測可能です。
活用例
宿題とコンテストの照合
与えられた辺について生徒が挙げた整数の組の完全一覧を、原始的かどうかも含め、一つの正準な応答と照合します。
格子と CAD の直角
固定した辺の長さに対して、もう一方の辺と斜辺の整数の相手を選び、図面・格子・工具経路が浮動小数点誤差なしで正確なピタゴラスの直角を保てるようにします。
よくある質問
辺が少なくとも三でなければならない理由は?
正の整数のピタゴラス数の組に辺 1 または 2 はありません。
辺20の組のうち原始的なのはどれですか?
4組のうち20-21-29と20-99-101の2組で、3辺に共通の約数がありません。残りの20-15-25と20-48-52は、より小さい三角形の整数倍です。
一覧の「原始的」とはどういう意味ですか?
3辺に1以外の共通の約数がない組のことです。6-8-10は3-4-5を2倍しただけなので、原始的ではありません。
辺はどこまで大きくできますか?
3から100万までの整数です。3未満の値、小数、上限を超える値は、不完全な一覧を返す代わりに分かりやすいメッセージで受け付けません。
相手の辺をどうやってすべて見つけますか?
a² + b² = c²を(c − b)(c + b) = a²と書き直し、偶奇のそろったa²の約数の組をすべて試します。組ごとに整数の三角形がひとつ得られるので、漏れはありません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/numth/pythagorean-from-leg \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"leg":20}'const res = await fetch("https://api.kit.forhosting.com/numth/pythagorean-from-leg", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"leg": 20
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/pythagorean-from-leg",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"leg": 20
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/pythagorean-from-leg", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"leg":20}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"leg":20}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/pythagorean-from-leg", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"leg": 20
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.pythagorean_from_leg",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
機能が一致する組をすべて見つける方法
必須フィールド leg だけを含む JSON 本体を送ります。結果はもう一方の辺の昇順、次いで斜辺の順に並べられ、同一の要求は常に同じ JSON の順序を返します。leg の欠落、非整数、三未満、公開上限を超える値などの無効入力は invalid_input で失敗し、課金されません。
利用場面と料金
一つの辺について素早く一覧が欲しいときは無料のブラウザツールを使い、スクリプトや成績簿、データ処理が多数の辺を毎回同じ方法で解く必要があるときは API を呼び出します。API 利用は成功したリクエストごとに公開の基本料金 $0.002 で前払い KIT 残高から引き落とされ、検証失敗では残高を消費しません。count と is_primitive は第一級のフィールドとして扱い、この契約からずれる可能性のあるクライアント側で再計算しないでください。
連携の活用例
見本の直角三角形ジェネレータ
連続する辺を API に渡し、デモ、ワークシート、正解付きのランダムクイズ用の整数辺直角三角形のライブラリを構築します。
技術的な質問
与えられた辺を使うピタゴラス数の組をどう列挙しますか?
整数フィールド leg(3 以上)を含む JSON 本体を POST します。応答には count と {a, b, c, is_primitive} の配列が含まれます。
応答の is_primitive は何を意味しますか?
gcd(a, b, c) が 1 のとき組は原始的です。6-8-10 のような倍率付きの組は 3-4-5 の倍数なので is_primitive は false です。
辺からピタゴラス数の組を求めるツールは無料ですか?
ブラウザウィジェットは無料でローカル動作します。API 呼び出しは公開の基本料金 $0.002 で前払い KIT 残高を使い、無効入力は課金されません。
同じ辺なら結果は常に同じですか?
はい。アルゴリズムは a² 上の純粋な約数列挙で、乱数もタイムスタンプもないため、同一入力は同一の JSON を返します。