逆元モジュロ計算機
11を法とする3の逆元は4です。3×4は12で、11で割ると余りが1になるためです。aと法を入れると0からm−1までの唯一の逆元が分かり、存在しないときははっきり知らせます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- A
- 3
- M
- 11
- A の法
- 3
- 逆関数
- 4
- Gcd
- 1
- 検算
- 1
逆元モジュロは厳密算術の一つの問いに答えます。整数 a と m が与えられたとき、0 から m 引く 1 までのどの剰余 x が、a と x の積が法 m で 1 と合同になるか。その剰余が a の法 m における乗法逆元であり、a と m が互いに素なとき、つまり最大公約数が 1 のときに限り存在します。暗号のメモ、一次合同式の競技解答、モジュラ除算、巡回群の宿題はいずれもこの逆元を求めますが、多くの言語は二進 gcd だけを公開し、Bézout 係数は呼び出し側に任せます。本逆元モジュロ計算機は整数 a と m を受け取り、拡張ユークリッド法を実行し、一意な非負逆元と、手順をやり直さなくても確認できる検算用の積を返します。
逆元モジュロの意味と剰余が存在する条件
逆元モジュロは、整数の法 m における剰余環の中で a による乗法を取り消す整数 x を指します。記号では a と x の積が法 m で 1 と合同、すなわち a x ≡ 1 (mod m) と書き、x を a の法 m におけるモジュラ乗法逆元と呼びます。通常の算術では 0 以外の数は常に逆元を持ち、それで割ると 1 になります。
モジュラ算術はより厳格です。剰余は m ごとに周るため、a と任意の整数の積は gcd(a, m) の倍数です。その gcd が 1 より大きいと、積は gcd の倍数でない 1 とは決して合同になりません。
逆に Bézout の恒等式は、gcd(a, m) が 1 のときちょうど a x 足す m y が 1 となる整数 x, y を保証し、x を 0 から m 引く 1 に還元すると本計算機が返す一意な逆元が得られます。
学習者は有限体での除算、Euler のトーシェントを法とする RSA 公開指数の逆、ハッシュ処理でのモジュラ積の取り消し、競技プログラミングでの一次合同式 a x ≡ 1 (mod m) の解法で同じ条件に出会います。逆元モジュロを探すのはその日常の言い回しです。a と m が与えられたとき、a を 1 に戻す剰余は何か。
クライアントは逆元が存在しないと分かり、どのライブラリが誤った剰余を返したかを推測する代わりに gcd で分岐できます。法は剰余系が自明にならないよう 2 以上の整数でなければなりません。
逆元モジュロ計算機が役立つ場面
教室や指導プラットフォームは専用の逆元モジュロツールを使い、学習者がユークリッドの手順を手で回さず、2 の 53 乗を超えると静かに精度を失う電卓にも頼らず、a の法 m における逆元を確認できるようにします。
試験ジェネレータや学習管理の採点器は、互いに素でない対を無効と印し、欠陥のある学生スクリプトも出しうる番兵値を成功として受けない決定的な神託を必要とします。競技コーチ、RSA 教材のサンドボックス、有限体デモ、モジュラ除算の補助はいずれも固定剰余範囲で整数を逆にします。検証失敗と互いに素でない対は残高を消費しません。
公開された大きさの上限内に要求を収め、テストで inverse を固定すれば、宿題、LMS プラグイン、エッジワーカー向けに再現可能な剰余が得られ、独自の数式インフラを立てる必要はありません。本能力は b が 1 以外の一般の一次合同式 a x ≡ b (mod m) を解かず、離散対数を計算せず、法なしに実数を逆にしません。
それらはカタログの別項目が担う別の検索意図です。
活用例
暗号ラボとモジュラ除算の補助
公開指数を φ(n) の法で逆にし、モジュラ積を取り消し、場当たり的な拡張 gcd 断片を文書化された上限内の一つの厳密呼び出しに置き換えます。
よくある質問
a と m が互いに素でない場合はどうなりますか?
メッセージに gcd(a, m) が含まれるので、逆元が存在しない理由が分かります。検証失敗は課金されません。
逆元モジュロはどのアルゴリズムで計算しますか?
拡張ユークリッド法です。a mod m と m の Bézout 係数を求め、gcd が 1 のとき a の係数を 0..m−1 に還元します。
a と m のどの範囲を受け付けますか?
m は 2 から 1,000,000,000,000 までの整数です。a は絶対値がその同じ上限以下の整数です。範囲外の値は拒否されます。
求めた逆元が正しいかはどう確かめますか?
aに逆元を掛け、mで割った余りが1になるかを見ます。aが3、mが11なら、逆元4との積は12で、余りは1です。計算機は結果と一緒にこの確認の値も表示します。
モジュロの逆元は何に使いますか?
合同算術での割り算、一次合同式の解法、有限体での計算、RSAの公開指数をオイラーのトーシェント関数を法として逆にする計算などに使います。暗号や競技プログラミング、巡回群の宿題でよく登場します。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/math/inverse-modulo \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":3,"m":11}'const res = await fetch("https://api.kit.forhosting.com/math/inverse-modulo", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 3,
"m": 11
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/inverse-modulo",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 3,
"m": 11
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/inverse-modulo", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":3,"m":11}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":3,"m":11}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/inverse-modulo", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"a": 3,
"m": 11
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.inverse_modulo",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_abs | 1000000000000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
a と m が互いに素でない場合、剰余を捏造せず invalid_input で失敗します。
逆元モジュロの意味と剰余が存在する条件
対が互いに素でないときに型付きの invalid_input を返す方が、黙ったゼロより役立ちます。法が 1 だとすべての整数が同じ類に潰れ、空の成功ではなく invalid_input として拒否されます。
入力契約、拡張ユークリッド法、エラー
逆元を求める整数 a と、2 以上の法 m です。古典的な検算では、a が 3 で m が 11 なら inverse は 4 です。3 かける 4 は 12 で余り 1 だからです。a が 7 で m が 26 なら inverse は 15 です。上付きのマイナス 1 が必要ならご自身の組版を添えてください。必須の整数二つを含む JSON 本体を POST してください。各フィールドは JSON 数値でも十進整数文字列でもよく、欠落、空文字、分数、非数値はフィールド名付きの invalid_input で失敗します。絶対値は 1 兆を超えてはならず、中間積が Worker 分離内に収まります。実装はまず a を 0 から m 引く 1 の非負剰余類 a_mod に還元し、a_mod と m の対に拡張ユークリッド法を適用します。各段で整数商を記録し Bézout 係数を更新し、終了時に a_mod の係数かける a_mod 足す m の係数が gcd になります。その gcd が 1 でなければ、両方の入力と gcd を挙げ a と m が互いに素でないと述べるメッセージ付きで invalid_input により失敗し、課金されません。gcd が 1 なら a_mod の係数を 0 から m 引く 1 に還元して inverse として返します。応答は a, m, a_mod, gcd、成功時は常に 1 である a_mod かける inverse の法 m に等しい check、および (a かける inverse) が法 m で 1 と合同という恒等式を述べる formula 文字列も返します。本エンドポイントは逆元だけを計算し、formula フィールドを超える図や手順散文は出しません。
逆元モジュロ計算機が役立つ場面
小さな parse API を呼べば、言語ごとに拡張 gcd を再実装せず、二つの整数のために数式処理系を引かずに済みます。実装は純粋な parse のティア A のため、成功した各呼び出しはモデルトークンも外向きネットワークもなく、公開された基本料金 $0.002 です。
連携の活用例
教室での逆元モジュロ確認
学習者に a と m を送らせ、(a · x) ≡ 1 (mod m) を満たす一意な剰余 x を確認させるか、対が互いに素でないときに明確な invalid_input を見せます。
競技の神託と LMS 自動採点
逆元モジュロの設問を決定的な inverse で採点し、互いに素でない入力は黙って空のゼロを返すのではなく invalid_input として拒否します。
技術的な質問
a の法 m における逆元はどう計算しますか。
整数フィールド a と m(m ≥ 2)の JSON を送ってください。成功時は 0..m−1 の inverse に加え、a_mod、gcd(常に 1)、check(常に 1)、恒等式の formula を返します。
逆元モジュロ計算機の料金はいくらですか。
ブラウザツールは無料です。API 要求は成功 1 回あたり $0.002 の前払い KIT 残高を使い、無効または互いに素でない入力は課金されません。