ヤコビ記号計算機
ヤコビ記号 (5/13) は −1 で、5が13を法とする平方ではないことが分かります。整数と正の奇数の分母を入力すると、平方剰余の相互法則を使い、分母を分解せずに −1、0、+1 のいずれかを返します。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 1つ目のテキスト
- 5
- N
- 13
- ヤコビ値
- -1
- 記号
- -1
ヤコビ記号 (a/n) は、ルジャンドル記号を素数法から任意の奇数の正整数 n へと拡張します。a と n が 1 より大きい公約数を持つとき 0 を返し、それ以外は n の素因数上のルジャンドル記号の積に応じて +1 または −1 を返します——あらかじめ n を素因数分解する必要はありません。本計算機は古典的な二次相互律アルゴリズムを実装します:分子から 2 のべきを除き、(2/n) の補充法則を適用し、両方が 3 mod 4 のとき相互律の符号で入れ替え、縮小します。
ヤコビ記号 (a/n) の意味
奇数の正整数 n と任意の整数 a に対し、ヤコビ記号 (a/n) はルジャンドル記号から乗法的に定義されます。n が奇素数 p のとき、ヤコビはルジャンドルと一致します:(a/p) は p が a を割るなら 0、a が p を法とする非零の二次剰余なら +1、二次非剰余なら −1 です。
n が奇素数の積に分解されるとき、(a/n) はその素数における a のルジャンドル記号の積(重複度付き)です。したがって (a/n) = 0 は gcd(a, n) が 1 より大きいときちょうど成り立ちます。
記号が −1 なら a は n を法として平方ではありませんが、+1 でも n が合成数のとき a が平方でないことがあります——ヤコビは二次剰余性の必要条件であり、常に十分条件ではありません。
値は両引数で完全乗法的であり(n の定義域に関する通常の注意付き)、二次相互律の法則により効率よく評価できます:a を n を法として非負剰余に還元し、(2/n) = (−1)^((n²−1)/8) で 2 の因数をはぎ取り、現在の奇部分がともに 3 mod 4 なら各交換で符号を反転します。
この手順は n を素因数分解せず、対数個の算術ステップで終わります。負の分子はループ前に標準剰余系へ還元され、(−1/n) は補充法則 (−1)^((n−1)/2) に自動的に従います。古典的ヤコビ記号は偶数の n や 1 未満の n では定義されないため本機能はそれらを拒否します。
クロネッカー記号は概念を拡張しますが、検索意図の異なる別ツールです。
制限・性能・適する場面
相互律アルゴリズムは入力の各ビットにつき一定量の合同算術を行うため、コストは n の試行除算による素因数分解ではなく n のビット長に比例します。偶数や零の分母向けクロネッカー記号、完全な剰余類格子ライブラリ、定数時間暗号プリミティブが必要な場合は専用多倍長スタックをご利用ください。
教員は学生が証明を提出する前に (a/n) の手計算を検証するのに使い、開発者は Solovay–Strassen 風の足場、二次指標が必要なパズル・CTF ソルバ、言語ごとに相互律を再実装したくないパイプラインに組み込みます。
活用例
課題とコンテストの (a/n) 答え合わせ
学生とコーチは、符号の反転を手で追い、整数精度を失う電卓に頼ることなく、二次相互律によるヤコビ記号の計算を検証できます。
素数判定と剰余性テストの足場
Solovay–Strassen デモ、オイラー判定、剰余類アサーション用の決定的ヤコビ手順が必要なスクリプトは、独自 BigInt ループを同梱せずに本機能を呼び出せます。
よくある質問
ヤコビ記号とは何ですか?
奇数の正の n に対する整数値関数 (a/n) で、ルジャンドル記号を一般化します。本計算機は −1、0、または +1 を jacobi(および同じ値を symbol)として返します。
なぜ n は奇数で少なくとも 1 でなければならないのですか?
古典的ヤコビ記号は奇数の正の分母にのみ定義されます。その拡張が必要ならクロネッカー記号ツールをご利用ください。
(a/n)=1 は a が n を法とする平方を意味しますか?
必ずしもそうではありません。記号が −1 なら a は n を法とする二次剰余ではありません。+1 でも n が合成数のとき a が平方でないことがあります。n が素数のときヤコビはルジャンドルと一致し、+1 は非零平方を意味します。
ヤコビ記号計算機はどのように動作しますか?
BigInt 上の二次相互律を用います:a を n で還元し、(2/n) の法則で 2 の因数を除き、両部分が 3 mod 4 のとき符号反転で入れ替え、剰余列が 0 に達したら終了します。
ヤコビ記号が0になるのはどんなときですか?
a と n が1より大きい共通の約数を持つときです。例えば (0/9) は0になります。それ以外の場合、結果は必ず +1 か −1 のどちらかです。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/numth/jacobi-symbol \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":"5","n":"13"}'const res = await fetch("https://api.kit.forhosting.com/numth/jacobi-symbol", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": "5",
"n": "13"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/jacobi-symbol",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": "5",
"n": "13"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/jacobi-symbol", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":"5","n":"13"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":"5","n":"13"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/jacobi-symbol", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"a": "5",
"n": "13"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.jacobi_symbol",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_digits | 2048 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
数論の課題、コンテストの確認、素数判定の足場、浮動小数や場当たり的なスクリプトなしで正確な (a/n) を要する決定的な API 手順にご利用ください。
API の呼び出し方と結果の読み方
必須フィールド a(分子)と n(奇数の正の分母)を含む JSON 本体を送信してください。それぞれ十進整数文字列または JSON 数でよく、JavaScript の安全整数範囲を超える値では文字列を推奨します。a には numerator または top、n には denominator、modulus、m の別名が受け付けられ、フォームと手書きクライアントが同一契約を共有します。成功時は a と n を正規化十進文字列、jacobi を整数 −1・0・1、text フィールドを好むクライアント向けに symbol を同じ値の文字列として返します。古典的確認:a=5 と n=13 で jacobi −1;a=2 と n=15 で +1;a=1001 と n=9907 で −1;a=0 と n=9 で 0;a=1 と任意の奇数 n で +1。欠落フィールド、非整数、分数、偶数 n、1 未満の n、公開桁上限を超える値は invalid_input を返し課金されません。料金は成功リクエストごとに定額 $0.002(限界単価ゼロの単位品目)です。
制限・性能・適する場面
本機能は a と n を各 2048 十進桁に制限し、コンテスト問題・授業用暗号デモ・多倍長課題には十分で、純粋 Worker BigInt が対話的に保てる規模に抑えます。この軽量 parse ツールは正確なヤコビ評価用の共有計算機および API ステップです。より広い合同ツールキットが必要なワークフローでは合同累乗や逆元ツールと組み合わせ、本エンドポイントはヤコビの問いのみに答えて検索意図を明確にし応答を最小に保ちます。
連携の活用例
CTF・パズル・数論パイプライン
奇数 n の正確な (a/n) が必要な出題者と解答者は、同一コアの安定 API と無料ブラウザツールを得られ、n が偶数のときは明確な invalid_input が返ります。
技術的な質問
ヤコビ記号計算機は無料ですか?
ブラウザツールは無料でローカル実行です。API 呼び出しは成功リクエストごとに $0.002 の前払い KIT 残高を使用し、失敗タスクは課金されません。