モジュラー冪乗計算機
バイナリべき乗法(高速べき乗法)アルゴリズムを使用して、モジュラー冪乗 a^b mod n を効率的に計算します。底、指数、法(モジュラス)を入力すると、平方剰余の繰り返し法、2進展開の可視化、暗号学的背景を含む詳細な計算過程と結果を即座に表示します。
広告ブロッカーにより広告が表示できません
MiniWebtool は広告収益で無料提供しています。このツールが役に立ったら、Premium(広告なし+高速)をご利用いただくか、MiniWebtool.com を許可リストに追加して再読み込みしてください。
- または Premium(広告なし)にアップグレード
- MiniWebtool.com の広告を許可してから再読み込みしてください
モジュラー冪乗計算機
モジュラー冪乗計算機は、\(a^b \bmod n\) を計算します。これは、底 \(a\) を指数 \(b\) で累乗し、法 \(n\) で割った余りを求める操作です。この電卓は、演算回数を \(O(b)\) 回の乗算からわずか \(O(\log b)\) 回に削減する バイナリ冪乗法(高速累乗法や繰り返し二乗法とも呼ばれます)を使用しています。これは、RSA、Diffie-Hellman、ElGamal などの実際の暗号実装で使用されているのと同じアルゴリズムです。
モジュラー冪乗の用途
バイナリ冪乗法アルゴリズムの仕組み
重要な洞察は、任意の指数をバイナリ表現(2進数)を使用して2の累乗の和に分解できることです。例えば、\(b = 13 = 1101_2 = 2^3 + 2^2 + 2^0\) なので、\(a^{13} = a^{8} \times a^{4} \times a^{1}\) となります。
アルゴリズムは、指数のバイナリ数字を左から右へと処理します:
擬似コード
function modpow(base, exp, mod):
result = 1
base = base mod mod
while exp > 0:
if exp is odd: // ビットが 1 の場合
result = (result × base) mod mod
exp = exp >> 1 // 右シフト(2で割る)
base = (base × base) mod mod
return result
主な公式
| 性質 | 公式 | 説明 |
|---|---|---|
| モジュラー冪乗 | \(a^b \bmod n\) | a^b を n で割った余り |
| フェルマーの小定理 | \(a^{p-1} \equiv 1 \pmod{p}\) | 素数 p かつ gcd(a,p)=1 の場合 |
| オイラーの定理 | \(a^{\phi(n)} \equiv 1 \pmod{n}\) | gcd(a,n)=1 の場合(φはオイラーのトーシェント関数) |
| バイナリ法の計算量 | \(O(\log b)\) 回の乗算 | 最大でも 2·log₂(b) 回のモジュロ乗算 |
| RSA 暗号化 | \(c = m^e \bmod n\) | 公開鍵 (e, n) でメッセージ m を暗号化 |
| RSA 復号 | \(m = c^d \bmod n\) | 秘密鍵 d で暗号文 c を復号 |
モジュラー冪乗計算機の使い方
- 底 (a) を入力: 累乗したい数値を入力します。正負どちらも可能です。例えば、7^256 mod 13 を計算する場合は 7 を入力します。
- 指数 (b) を入力: 非負の整数である必要があります。これは累乗のパワーを表します。暗号用途では非常に大きな値になることがありますが、この電卓は 10^18 までサポートしています。
- 法 (n) を入力: 正の整数である必要があります。これは割り算をして余りを求めるための数値です。RSA では通常、2つの大きな素数の積になります。
- 計算をクリック: 電卓はバイナリ冪乗法を使用して a^b mod n を計算し、即座に結果を表示します。
- アニメーションを見る: 「再生」を押すと、バイナリ冪乗法アルゴリズムがステップごとに実行される様子を確認できます。指数の各ビットが順番に処理され、アルゴリズムが「二乗」のみを行うか、「二乗して乗算」を行うかが示されます。
- 追跡データを確認: ステップごとの表にはすべての中間計算が表示され、効率の比較では、バイナリ冪乗法が素朴な連続乗算よりもどれだけ速いかが示されます。
なぜバイナリ冪乗法は速いのか
\(2^{1000} \bmod 13\) の計算を考えてみましょう。素朴な方法では 999 回の乗算が必要です。バイナリ冪乗法では 1000 をバイナリ(1111101000)に変換しますが、これは 10 ビットです。必要なのは最大 9 回の二乗と、ビットが「1」の場所での数回の乗算だけで、合計約 15 回の演算で済みます。これは 約 98.5% の演算削減 になります。数百桁の指数を持つ暗号規模の計算では、その差は天文学的です。バイナリ法では数千回の演算で済みますが、素朴な方法では宇宙にある原子の数よりも多くの演算が必要になってしまいます。
FAQ
このコンテンツ、ページ、またはツールを引用する場合は、次のようにしてください:
"モジュラー冪乗計算機"(https://MiniWebtool.com/ja//) MiniWebtool からの引用、https://MiniWebtool.com/
by MiniWebtool チーム. 更新日: 2026-04-16
また、AI 数学ソルバー GPT を使って、自然言語による質問と回答で数学の問題を解決することもできます。