の最後の桁を計算する方法 $122^{122}$?[複製]
使ってみます $$122^{122} = 2^{122} (\mod 10)$$
しかし、私はMATLABを使用しています $122^{122}=2 (\mod 10)$ そして $2^{122}=4 (\mod 10)$。なぜそれらは同じではないのですか?スクリーンショットは次のとおりです。

回答
Matlabにアクセスできなくなったため、このエラーを正確に再現することはできません。Octaveをオンラインで使用すると、同様の間違いが見られます。
octave:2> mod(122^122, 10)
ans = 0
powermodなどの関数を使用する必要があります。秘訣は、計算したくないということです$122^{122}$ 明示的に。
そのことに注意してください $122^{122}$は非常に大きな数であり、flintmaxを超える倍精度浮動小数点で動作しています。この値を超えると、倍精度形式には整数精度がなく、すべての整数を正確に表すことができるわけではありません。
答えは確かにです $4$。
Pythonの結果は次のとおりです。
>>> 122**122 % 10 # cool, it can be computed
4
>>> pow(122, 122, 10) # preferred.
4
中国の剰余定理を使用できます。以来$2$ そして $10$ 互いに素ではないので、オイラーは直接適用できません。
$10=2\cdot5$、および $2^{122}\equiv0\bmod2$。我々が得る$\varphi (5)=4\implies2^{122}\equiv2^2\equiv4\bmod5$、そして答えは $4$。
$122^{122} \equiv 2^{122} (\text{mod $10$})$
なので、 $2^5\equiv 2 (\text{mod $10$})$ $\implies 2^{120}\equiv 2^{24} \equiv 2^{4} (\text{mod $10$})$ $\implies 2^{122} \equiv 2^{6} \equiv 4 (\text{mod $10$})$
の最後の桁を見つけるという一般的な問題を見てください $n^m$。
取る $n=10N+h$ どこ $0\le h\le9$ そして $m=4M+k$ どこ $0\le k\le3$。
桁の累乗には次の期間があります $4$ モジュロ $10$ 次の方法: $$1\to1\to1\to1\\2\to4\to8\to6\\3\to9\to7\to1\\4\to6\to4\to6\\5\to5\to5\to5\\6\to6\to6\to6\\7\to9\to3\to1\\8\to4\to2\to6\\9\to1\to9\to1$$
例: $797^{723}=(10N+7)^{4\cdot180+3}\equiv7^3\pmod{10}=3\pmod{10}$。
これを適用して、問題の答えを見つけてください。
実は $ 122^{122} mod 10 = 4$。それらは同じです。