判別式から簡約原始二元二次形式を列挙
負の判別式に対する、簡約された原始的で正定値の形式ax² + bxy + cy²を一覧にします。−23では[1, 1, 6]、[2, −1, 3]、[2, 1, 3]の3つで、類数は3です。正確な整数計算だけを使います。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 判別式
- -23
- 数量
- 3
この計算機は、指定した負の判別式を持つ、整数係数で原始的かつ正定値の二元二次形式について、標準的な簡約代表を列挙します。有効な判別式を入力すると、すべての係数の組 [a, b, c]、個数、入力した判別式が結果に表示されます。計算は整数演算による厳密かつ決定的なものです。類数の例題確認、演習問題の作成、同値類の調査、手計算の検算に役立ち、数式処理ソフトの導入や外部の数学データベースは必要ありません。
この計算機が列挙するもの
二元二次形式とは、整数係数を持つ式 ax² + bxy + cy² です。判別式は D = b² − 4ac で表されます。D が負で a が正なら、その形式は正定値です。
この計算機は gcd(a, b, c) = 1 を満たす原始形式だけを返し、|b| ≤ a ≤ c を満たす簡約代表を選びます。境界では、|b| = a または a = c のとき b ≥ 0 とする標準規約を適用します。これらの条件により結果は有限となり、各固有同値類から標準的な代表が一つ得られます。
各結果は個別の係数と簡潔な [a, b, c] 表記の両方で示されます。表示される個数は、指定した判別式について見つかった簡約原始形式の総数です。
判別式の選択と検証
4 を法として 0 または 1 と合同な負の整数を入力してください。この条件が必要なのは、b² が 4 を法として常に 0 または 1 になるためです。たとえば −23 は 4 を法として 1 なので有効ですが、−22 は二次形式の判別式ではありません。
0、正の値、分数、安全な整数でない値、公開された範囲外の値は拒否されます。判別式は基本判別式である必要はなく、原始形式の絞り込みは常に行われます。有効でも原始代表を持たない判別式があり、その場合はエラーではなく、空の一覧と個数 0 が返されます。
厳密で再現可能な列挙方法
アルゴリズムは簡約理論から直接導かれます。正定値の簡約形式では、不等式から a ≤ √(|D|/3) が得られ、外側の反復回数に有限の上限が定まります。各 a について −a から a までの整数 b を調べ、必要な偶奇条件を確認し、(b² − D)/(4a) から c を計算します。
c が整数、a ≤ c、境界の符号規約を満たし、3 係数の最大公約数が 1 である候補だけを残します。採否の判定には安全な整数の厳密演算を用います。結果は a の昇順、続いて b の昇順で並ぶため、呼び出すたびに同じ結果になります。
活用例
類数の演習を確認
手作業で導いた簡約形式の一覧を、完全かつ一定順序の列挙結果と比較できます。
判別式を調査
基本および非基本の負の判別式で、係数の組と形式数がどう変わるか確認できます。
よくある質問
有効な入力は何ですか?
4 を法として 0 または 1 と合同で、公開範囲内にある負の整数を使用してください。
原始形式とは何ですか?
形式 [a, b, c] の 3 係数の最大公約数が 1 である場合、その形式を原始的と呼びます。
ここで簡約とは何を意味しますか?
出力は |b| ≤ a ≤ c を満たし、いずれかの境界等号が成り立つ場合は b が非負になります。
同値な重複形式も含まれますか?
いいえ。 簡約条件により、各固有同値類から代表を一つだけ選びます。
有効な判別式でも形式が 0 件になることはありますか?
はい。 非基本判別式が原始代表を持たない場合があり、その際はエラーではなく空の一覧を返します。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/numth/reduced-binary-forms \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"discriminant":-23}'const res = await fetch("https://api.kit.forhosting.com/numth/reduced-binary-forms", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"discriminant": -23
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/reduced-binary-forms",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"discriminant": -23
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/reduced-binary-forms", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"discriminant":-23}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"discriminant":-23}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/reduced-binary-forms", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"discriminant": -23
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.reduced_binary_forms",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
min_discriminant | -10000000 |
max_discriminant | -3 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
判別式の選択と検証
API では短い別名 d も使用できますが、保存するコードでは discriminant の方が明確です。
厳密で再現可能な列挙方法
ネットワーク、乱数、時計、データベース、非公開表は使わず、ブラウザーでも API でも 1 回 $0.002 で同じ計算を行います。
連携の活用例
厳密なテストデータを作成
数論の教材、スクリプト、回帰テスト向けに決定的なデータを生成できます。
技術的な質問
料金はいくらですか?
このページのブラウザーでは無料で実行でき、API は 1 回 $0.002 で利用できます。