方針
2m−1 を 2n−1 で割った余りを求める恒等式 Mm=2m−nMn+Mm−n を作る。指数について互除法(引き算)が回り、指数の gcd に落ちる。
解答
⓪ 発想(どう考え始めるか) gcd(2m−1, 2n−1) を、指数についての互除法に置き換えたい。
決め手は割り算の恒等式 Mm=2m−nMn+Mm−n だ。2m−1 を 2n−1 で割ると、余りがちょうど Mm−n=2m−n−1 になる。つまりユークリッドの互除法で指数の引き算 m−n が起こる。指数について互除法を回すと gcd(m,n) に落ち、gcd(Mm,Mn)=2gcd(m,n)−1 が出る。
重要恒等式 2m−1=2m−n(2n−1)+(2m−n−1)、すなわち Mm=2m−nMn+Mm−n
① 割り算の恒等式。 2m−n(2n−1)=2m−2m−n だから
2m−1=(2m−2m−n)+(2m−n−1)=2m−nMn+Mm−n.
よって Mm を Mn で割った余りは Mm−n(0≤Mm−n<Mn、m>n より)。ゆえに
gcd(Mm,Mn)=gcd(Mn,Mm−n)=gcd(Mm−n,Mn).
② 互除法が指数に対応。 この操作は指数について (m,n)→(m−n,n) となり、ユークリッドの互除法(引き算版)そのものだ。互除法を繰り返すと、指数は最終的に gcd(m,n) に落ちる。
③ 結論。 よって
gcd(Mm,Mn)=Mgcd(m,n)=2gcd(m,n)−1.
(例:gcd(M6,M4)=gcd(63,15)=3=22−1=Mgcd(6,4)。)
まとめ Mm を Mn で割った余りが Mm−n、という恒等式で互除法が指数の引き算になる。回し切ると gcd(Mm,Mn)=2gcd(m,n)−1。漸化式(互除法)と整数の融合。
発展。 Mp=2p−1 が素数(メルセンヌ素数)になるには p 自身が素数であることが必要だ(p=ab なら Ma∣Mp で分解してしまう)。逆は成り立たず、M11=2047=23×89 は合成数。知られている最大の素数の多くがメルセンヌ数の形なのは、この構造と高速判定法(リュカ・レーマー法)があるからだ。
答Mm=2m−nMn+Mm−n(恒等式)から、Mn で割った余りが Mm−n。ユークリッドの互除法が指数の引き算に対応し、gcd(Mm,Mn)=Mgcd(m,n)=2gcd(m,n)−1。
別解
別解:「d∣n⟺Md∣Mn」を先に押さえる(得意な人向けの高い視点)。 割り切れる関係を直接使うルートもある。
2n−1 を等比数列の和とみると、d∣n のとき
2n−1=(2d−1)(2n−d+2n−2d+⋯+1)
と因数分解できる。つまり d∣n⇒Md∣Mn。逆に d∤n なら割り切れない(余りが Mnmodd=0)。まとめると
Md∣Mn⟺d∣n.
すると gcd(Mm,Mn) が何になるかが分かる。Mm と Mn をともに割る最大の Md は、d∣m かつ d∣n を満たす最大の d、すなわち d=gcd(m,n) に対応する。よって
gcd(Mm,Mn)=2gcd(m,n)−1.
互除法を回す本解と、「割り切れる条件」を先に確立するこの解。どちらも「指数の整除が、メルセンヌ数の整除に写る」という一点に支えられている。
ポイント
- Mm=2m−nMn+Mm−n で余りが Mm−n。
- gcd(Mm,Mn)=gcd(Mm−n,Mn)(互除法の1ステップ)。
- 互除法が指数の gcd に落ち、2gcd(m,n)−1。
よくある間違い
- 恒等式 Mm=2m−nMn+Mm−n を作れず、Mm を Mn で割った余りが Mm−n だと示せない。
- 指数の互除法(引き算 m−n)と、通常の数の互除法を混同する。
- gcd(m,n)=1 のとき gcd(Mm,Mn)=21−1=1(互いに素)を、0 や別の値と誤る。