Twitterで見かけた答えが意外過ぎる問題.
多項式の公約数と言えば、昔どこかに投稿したんだけど、nが自然数の時の n^5+5 と (n+1)^5+5 の正の公約数としてあり得る整数が、おそらく見た目からは予想できない結果で、面白い。
— nishimura (@icqk3) 2020年8月10日
自然数 の最大公約数 (greatest common divisor) を
で表します.
この手の問題は,小さい で試してみるのが常套手段です.
くらいまで試してみると,すべて
となります.その後,
を 1万,10万と増やしていっても,ずっと gcd は
のままです.こうなると,はいはいパターン見えてきたよと
であると予想を立て,数学的帰納法で証明しようという気になります.しかしこれはうまくいきません.実は
のときは
なのに,
で急に\begin{align}\mathrm{gcd}(533360^5+5,533361^5+5)= 1968751\end{align}となります.こんなことが起こることも面白いですし,これに気が付いたことも凄いと思います.この
が約53万でフリーザの戦闘力とほぼ同じなことも芸術点が高いです.
Why Japanese people?
なぜこのようなことが起こるのか考えてみましょう.
で生成される
のイデアルを
で表すことにします.すると次が成り立ちます.
最大公約数をこの等式で理解することは結構大切です.例えばユークリッドの互除法はイデアルの生成系の取り換えをしているだけと見ることがでいます.また, の要素は
の倍数になっているので,具体的な整数
を
つ見つけることができると,
の候補が有限個に絞られます.
がどうなるか考えていきましょう.
\begin{align}
f_0(n):=&~(n+1)^5+5\\
f_1(n):=&~n^5+5\\
f_2(n):=&~f_0(n)-f_1(n)=5n^4+10n^3+10n^2+5n+1\\
f_3(n):=&~5f_1(n)-(n-2)f_2(n)=10n^3+15n^2+9n+27\\
f_4(n):=&~4f_2(n)-(2n+1)f_3(n)=7n^2-43n-23\\
f_5(n):=&~49f_3(n)-(70n+535)f_4(n)=25056n+13628\\
f_6(n):=&~156950784 f_4(n)-(43848n-293201)f_5(n)=385875196
\end{align} なので, となります.ちょっと注意をしておくと,この計算はユークリッドの互除法そのものではありませんので,最後に出てきた
は最大公約数とは限りません.しかし,定義から
のとき
であるので,\begin{align} 385875196&=f_6(n)\in \langle f_{5}(n), f_{4}(n) \rangle \subset\langle f_{4}(n), f_{3}(n) \rangle \subset\langle f_{3}(n), f_{2}(n) \rangle \\
& \subset\langle f_{2}(n), f_{1}(n) \rangle \subset\langle f_{1}(n), f_{0}(n) \rangle = \langle n^5+5,(n+1)^5+5\rangle \end{align} が言えるのです.
つまり は
の約数です.
を素因数分解してみると\begin{align}
385875196=2^2\times 7^2\times 1968751
\end{align}となります.
素因数 ごとに,
が
を割り切るかどうか考えてみます.
が
を割り切ることは
が
の両方を根に持つことと同値です.
のとき.
は
しか根を持ちません.
よって は
で割り切れません.
のとき.
は
しか根を持ちません.
よって は
で割り切れません.
のとき.
\begin{align} x^5+5=(x-1066696)(x-1707583)(x-96502)(x-533360)(x-533361) \end{align} という因数分解が で成り立ちます.つまり
は \begin{align} n\equiv 1066696, 1707583, 96502, 533360, 533361 \mod 1968751\end{align} のときに
の倍数となります.
が共に
の倍数となるのは
のときのみです.
よって,冒頭の問題の答えは \begin{align} \mathrm{gcd}(n^5+5, (n+1)^5+5)= \begin{cases}
1968751 & (n\equiv 533360 \mod 1968751)\\
1 & (\mbox{otherwise})
\end{cases}\end{align} となります.
以上.
追記
世の中には整数係数グレブナー基底という超便利な道具があり,Sage などに実装されているそうです.
doc.sagemath.org
の整数係数グレブナー基底を計算すると
となります(下記リンクで計算結果を見ることができます).
sagecell.sagemath.org
これは のイデアルとして \begin{align}\langle x^5+5,(x+1)^5+5\rangle =\langle x + 1435391, 1968751 \rangle\end{align} であることを示しています.このことから,自然数
に対して \begin{align} \mathrm{gcd}(n^5+5, (n+1)^5+5)=\mathrm{gcd}(n + 1435391, 1968751) \end{align} が成り立つことが分かります.
が素数であることも計算機で確かめることができるので,
は
まはた
であり,
となるのは \begin{align} n\equiv - 1435391 \equiv 533360 \mod 1968751\end{align} のときということが分かります.
でも類似の現象が起こるそうです.
sagecell.sagemath.org
このグレブナー基底の計算によると \begin{align} &\langle x^{17}+9, (x+1)^{17}+9\rangle \\
&= \left\langle\begin{array}{r} x + 512149312322827330662764931050044963334032796143126, \\
8936582237915716659950962253358945635793453256935559~ \end{array} \right\rangle\end{align}が成り立ちます.この2番目の生成元である自然数が素数になっています.
さらに追記
くさだんごさんが記事を書いてくれました.
mochi-mochi61.hatenablog.com
イデアル に対して,
に含まれる元を得るために終結式を使っています.
終結式 - Wikipedia
私の記事ではなんちゃってユークリッドの互除法を使いましたが,余計な素因数 が出ていました.終結式を使う方法では余分な因子が出ません.