我有一个「暴力」的证明方法.
设 . 各个数位立方再求和,我们将之记为映射
我们记 . 至于为什么 把 3 的倍数映射为 3 的倍数,只需观察公式:
不过这并不是重点,接下来才是——
我们考察什么时候 迫使 下降到 ,即 .
我们考虑极端的情况. 若 是 位数,则
解此不等式,当 时,此不等式恒成立. 这意味着无论多大的数 ,经过 的反复作用后,都不会超过五位数,偶然达到五位数必然会碰到「天花板」而向下反弹.
所以,只需要用计算机把不超过五位数的数字(3 的倍数)全部验证一遍就够了……
编一个程序简单验证一下:
# R语言 f <- function(n) #3|n { g <-function(n) #将数字n各个数位拆分为向量 { n = strsplit(as.character(n),'')[[1]] n = as.numeric(n) } n = g(n) L = length(n) repeat { n = sum(n^3) print(n) #展示每一次计算的结果直至遇到153停止 if(n==153)break n = g(n) } } h <- function() { for(i in seq(3,99999,3)) f(i) print("excited!") #如果正确,则输出"excited!" } system.time(h()) #程序运行所需时间
运行结果:
[1] "excited!" user system elapsed 0.937 0.007 0.941
说实话验证效率太高了,连 秒都用不了……
至于纯数论的方法,我就当围观群众吧~
如果不那么暴力(尽管还是借助了计算机),我们也可以展示为什么153是不动点.
事实上,如果把条件放松, 不必是 3 的倍数,那么 153 并不是唯一的不动点:0、1、153、370、371、407 都是 的不动点. (0、1是平凡不动点,一般我们就省略不谈了).
另外,除了不动点,还有很多循环圈(不包括不动点):
而 153 作为唯一可以被 3 整除的不动点,再加上我们前面说明了 的两个性质:
巧合的是,所有的循环圈都不包含 3 的倍数,那么 153 只能是唯一的归宿.
至于高次的情况,分析方法照搬就行,但是都没有 3 次这么简洁的结论.
这个不成立吧!
举例说99
各数位的数字是9和9
对这两个数字求立方和是729+729=1458,哪里来的固定数值153?
好吧,问题被修改了,但是还是不严谨,应该是
将任意一个3的倍数n(n不为0)各个数位上的数字进行立方求和,得到新的和数后重复之前运算,有限次重复后总能得到153。
两个条件必须具备
1是n不能为0。
2是必须是有限次重复。
暂时就这两个问题,至于证明,我还在想……
任何对于十进制下的整数n ,n和它自己的所有位数之和对于膜3同余。
令f(n)是上述描述的操作,由费马小定理,n和f(n)对于膜3同余。
不难验证(留作课后习题)
当n>1999时,有f(n) <n 。
所以迭代若干步后总会得到一个小于1999的3的倍数。
153恰好是f(n)的不动点。(类似的数叫做水仙花数)
QED