繰り返し二乗法を用いて、 を で割った余り ()を求めよ。すなわち
を満たす整数 を求めよ。
繰り返し二乗法によるべき剰余
指数を 2 進法で表し、 を順に 2 乗して必要なものを掛け合わせることで、 や のようなべき剰余を手計算で求められる
前提
この技能までの道筋(18 技能)
読み込み中…
右端(太枠)がこの技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
一覧で見る(前提が先)
- 分数のたし算・ひき算 (算数 計算と数のきまり)
- 小数の四則計算 (算数 計算と数のきまり)
- 正負の数の加法・減法 (中学数学 数と式)
- 分数のかけ算・わり算 (算数 計算と数のきまり)
- 四則の混じった計算の順序 (算数 計算と数のきまり)
- 正負の数の乗除・累乗と四則混合 (中学数学 数と式)
- 分配法則を使った計算のくふう (算数 計算と数のきまり)
- 文字式の計算(同類項・分配法則) (中学数学 数と式)
- 乗法公式による展開 (中学数学 数と式)
- 因数分解 (中学数学 数と式)
- 約数の見つけ方 (算数 整数の性質)
- 文字式で表した整数の性質 (中学数学 数と式)
- 余りによる整数の分類 (数学A 整数の性質)
- 樹形図で数え上げる (算数 場合の数)
- 積の法則と和の法則 (算数 場合の数)
- 和の法則・積の法則と樹形図 (数学A 場合の数と確率)
- 合同式 (数学A 整数の性質)
- n 進法 (数学A 整数の性質)
説明
を で割った余り(べき剰余)を、 を 回掛けることなく求める方法です。指数 を 2 進法で表し、 の余りを「2 乗しては余りを取る」ことで順に作り、必要なものだけを掛け合わせます。指数が数十〜数百あっても、掛け算はおよそ 回で済みます。RSA 暗号の暗号化・復号や、合同式での大きな累乗の計算などで使います。
なぜそうしてよいのか
指数 を 2 進法で ()と表すと、指数法則により となります。つまり という形の数さえ用意できれば、あとは 2 進表示で桁が のところに対応するものを掛ければよいのです。
その は、 なので、一つ前のものを 2 乗するだけで次が得られます。しかも合同式は積について閉じている( なら )ので、毎回 で割った余りに置き換えてから 2 乗したり掛けたりしてよく、扱う数はいつも 未満に収まります。
たとえば なら、 を 28 回掛ける代わりに、2 乗 4 回と掛け算 3 回の計 7 回で済みます。指数が大きいほどこの差は劇的になります。
手順
指数 を 2 進法で表し、 と 2 のべきの和に分ける。
を で割った余り から始め、(2 乗して で割った余り)を繰り返して、 の表を 2 進表示の最上位の桁まで作る。
2 進表示で桁が の位置 に対応する だけを選び、掛け合わせる。掛けるたびに で割った余りに置き換える。
最後に得た 以上 以下の数が を で割った余りである。
例題
を で割った余りを求めよ。
例題の解答
【手順 1】 なので 。
【手順 2】2 乗して余りを取ることを繰り返す(法は )。
【手順 3】桁が の を掛け、そのつど余りを取る。
【手順 4】 は 以上 以下なので、。求める余りは 。
答え:
よくある誤り
選んだ どうしを掛けるときに指数を掛けてしまう誤り( など)。正しくは指数は足し算で 。だから 2 進表示の各桁の値の和が元の指数 に一致する。
次の段を作るときに 2 乗ではなく 2 倍してしまう誤り( から とする)。正しくは 。
指数まで で割った余りに置き換えてしまう誤り( とする)。合同式で置き換えてよいのは底と途中の値だけで、指数は置き換えられない。正しく計算すると 。
2 進表示を間違える、または桁が の位置の値まで掛けてしまう誤り( を として を計算するなど)。掛ける前に、選んだ 2 のべきの和が指数に一致するか()を必ず確かめる。
この説明は AI が書き、別の AI が例題を独立に解いて答えを確かめ、説明を一歩ずつ査読しました。
入口の問題
繰り返し二乗法を用いて、 を で割った余り ()を求めよ。
繰り返し二乗法を用いて、 を で割った余りを求めよ。すなわち、 を満たす整数 を求めよ。
この技能を使う問題
素数 , を用いて RSA 暗号の鍵を作る。 とし、公開鍵の暗号化指数を とする。秘密鍵の復号指数 は、 を満たす の整数とする。
平文 ( を満たす整数)を , により暗号化したところ、暗号文 が得られた。平文 を求めよ。
素数 と、法 の原始根 を公開パラメータとして、アリスとボブがディフィー・ヘルマン鍵共有を行う。
アリスは秘密の整数 を選び、()をボブに送る。ボブは秘密の整数 を選び、()をアリスに送る。その後、アリスは を、ボブは を計算し、これを共有鍵 ()とする。
共有鍵 を求めよ。
合成数 を法とする離散対数を考える。
を満たす最小の正の整数 を求めよ。RSA 暗号の受信者は、相異なる素数 を選んで とし、公開鍵 を公開した。秘密鍵の復号指数 は
を満たす整数である。ここで である。送信者は平文 ( を満たす整数)を ()によって暗号化して送る。いま攻撃者は、 そのものは知らないが、 であることを知った。さらに暗号文 を傍受した。この暗号文に対応する平文 を求めよ。
素数 と、法 の原始根 を公開パラメータとするエルガマル暗号を考える。受信者は秘密鍵 を選び、公開鍵 ()を公開している。
送信者は平文 ( の整数)を、整数 を選んで
により暗号文 に変換して送る。受信者が受け取った暗号文が であるとき、平文 を求めよ。素数 について、 は法 の原始根である( の法 での位数は )ことを用いてよい。
を満たす整数 のうち、法 における位数( となる最小の正の整数 )がちょうど であるものをすべて考える。それらの の総和を求めよ。
素数 について、 は法 の原始根である( の法 での位数は )。
合同式
を満たす整数 はただ つ存在する。その を求めよ。素数 について、 は法 の原始根である( の法 での位数は )。
を満たす整数 ( の底 に関する離散対数)を求めよ。ディフィー・ヘルマン鍵共有の公開パラメータとして、素数 と、法 の原始根 を選びたい。ここで整数 が法 の原始根であるとは、 の法 における位数( を満たす最小の正の整数 )が であることをいう。
を満たす法 の原始根 のうち、最小のものを求めよ。
この技能の次に学べること
- RSA 暗号の鍵生成・暗号化・復号 (大学数学 暗号理論)
- ディフィー・ヘルマン鍵共有 (大学数学 暗号理論)
- ベビーステップ・ジャイアントステップ法 (大学数学 暗号理論)
- ポーリッヒ・ヘルマン法による離散対数 (大学数学 暗号理論)
- べきの塔の剰余 (大学院数学 計算理論・ラムダ計算)
- 平方剰余とオイラーの規準 (大学数学 整数論)