n^5 和 n 的个位数是否总相等?

31 阅读1分钟

背景

05=00^5=0
15=11^5=1
25=322^5=32
35=2433^5=243
45=210=10244^5=2^{10}=1024
\cdots

看起来对自然数 nn 而言,n5n(mod10)n^5\equiv n\pmod{10},那么这个猜测是否正确呢?

正文

题目:对任意自然数 nnn5n(mod10)n^5\equiv n\pmod{10} 是否总是成立,请证明其成立或者找到反例

分析

暴力做法

考虑到 n5n^5 的个位数只受到 nn 的个位数的影响,所以我们只需要检查 n=0,1,2,3,4,5,6,7,8,9n=0,1,2,3,4,5,6,7,8,9 的情况。我写了个简单的 Python\text{Python} 程序 (豆包 帮我完善了格式),可以帮助我们验证 ⬇️

print(r"|$n$|$n^5$|$n^5\equiv n \pmod{10}$")
print("|--|--|--|")
for n in range(10):
    if n ** 5 % 10 == n % 10:
        print(f"|${n}$|${n ** 5}$|$\\text{{true}}$|")
    else:
        print(f"|${n}$|${n ** 5}$|$\\text{{false}}$|")

请将以上代码保存为 brute_force.py。用以下命令可以运行 brute_force.py

python3 brute_force.py

运行结果是一个符合 markdown 语法的表格 ⬇️

nnn5n^5n5n(mod10)n^5\equiv n \pmod{10}
0000true\text{true}
1111true\text{true}
223232true\text{true}
33243243true\text{true}
4410241024true\text{true}
5531253125true\text{true}
6677767776true\text{true}
771680716807true\text{true}
883276832768true\text{true}
995904959049true\text{true}

暴力做法的严谨性当然没有问题,不过我感觉还是缺少点美感。我们再试试其他思路。

数学归纳法

在背景那一小节,我们验证了 n=0,1,2,3,4n=0,1,2,3,4 时,n5n(mod10)n^5\equiv n\pmod{10} 均成立。假如 n5n(mod10)n^5\equiv n\pmod{10} 总是成立的话,也许可以用数学归纳法证明。

n=0n=0 时,显然成立。

假设 n=kn=k 时,k5k(mod10)k^5\equiv k\pmod{10} 成立,那么我们的目标是证明(或者找到反例来证伪) (k+1)5k+1(mod10)(k+1)^5\equiv k+1\pmod{10}

用二项式定理,展开 (k+1)5(k+1)^5,可得

(k+1)5(k+1)^5
=C50k015+C51k114+C52k213+C53k312+C54k411+C55k510=C_5^0 k^0 1^5+ C_5^1 k^1 1^4 +C_5^2 k^2 1^3+C_5^3 k^3 1^2+C_5^4 k^4 1^1+C_5^5 k^5 1^0
=C50k0+C51k1+C52k2+C53k3+C54k4+C55k5=C_5^0 k^0 + C_5^1 k^1 +C_5^2 k^2 +C_5^3 k^3 +C_5^4 k^4 +C_5^5 k^5
=k0+5k1+10k2+10k3+5k4+k5=k^0 + 5 k^1 +10 k^2 +10 k^3 +5 k^4 + k^5
=1+5k+10k2+10k3+5k4+k5=1 + 5 k +10 k^2 +10 k^3 +5 k^4 + k^5

我们关心的是 k5+1k^5+1k+1k+1 的差值是否为 1010 的倍数,那么我们来计算两者的差值 ⬇️

(k+1)5(k+1)(k+1)^5-(k+1)
=1+5k+10k2+10k3+5k4+k5(k+1)=1 + 5 k +10 k^2 +10 k^3 +5 k^4 + k^5 - (k+1)
=5k+10k2+10k3+5k4+(k5k)=5 k +10 k^2 +10 k^3 +5 k^4 + (k^5-k)
  • 由归纳假设 k5k(mod10)k^5\equiv k\pmod{10},所以 10(k5k)10\mid(k^5-k),可以忽略 (k5k)(k^5-k)
  • 1010k210\mid 10 k^2,可以忽略 10k210 k^2
  • 1010k310\mid 10 k^3,可以忽略 10k310 k^3

那么只要检查 5k+5k45 k +5 k^4 是否总是 1010 的倍数就行了。

5k+5k4=5k(1+k3)5 k +5 k^4=5 k (1 + k^3)
  • 如果 kk 是奇数,那么 2(1+k3)2\mid (1+k^3),所以 105k(1+k3)10\mid 5 k (1 + k^3)
  • 如果 kk 是偶数,那么 105k10\mid 5k,所以 105k(1+k3)10\mid 5 k (1 + k^3)

综上 10((k+1)5(k+1))10\mid ((k+1)^5-(k+1))。那么 n5n(mod10)n^5\equiv n \pmod{10}n=k+1n=k+1 也成立。至此,我们用数学归纳法证明了 n5n(mod10)n^5\equiv n\pmod{10} 对任意自然数都成立。

程序验证

由于 n5n^5 的个位数只受到 nn 的个位数的影响,所以我们只需要验证 n=0,1,2,3,4,5,6,7,8,9n=0,1,2,3,4,5,6,7,8,9 的情况。请将以下代码保存为 verify.py

for n in range(10):
    print(f"n: {n}, n ** 5: {n ** 5}, n ** 5 - n: {n ** 5 - n}")

使用如下命令可以运行 verify.py

python3 verify.py

运行结果如下

n: 0, n ** 5: 0, n ** 5 - n: 0
n: 1, n ** 5: 1, n ** 5 - n: 0
n: 2, n ** 5: 32, n ** 5 - n: 30
n: 3, n ** 5: 243, n ** 5 - n: 240
n: 4, n ** 5: 1024, n ** 5 - n: 1020
n: 5, n ** 5: 3125, n ** 5 - n: 3120
n: 6, n ** 5: 7776, n ** 5 - n: 7770
n: 7, n ** 5: 16807, n ** 5 - n: 16800
n: 8, n ** 5: 32768, n ** 5 - n: 32760
n: 9, n ** 5: 59049, n ** 5 - n: 59040

结果符合预期