Collatz猜想,是德国汉堡大学一个名叫Lothar Collatz的大学生在1937年提出的问题。说的是一个递推数列,从一个初始正整数a出发,如果是偶数就除以2,如果是奇数就乘以3再加1;那么最后总会落入4,2,1的循环。
问题阐述如此简单,小学生都明白。我经常把它作循环数列的例子讲给小学生听;没有想到,其证明却很难。许多大数学家对此都束手无策。有人甚至用分布式计算机去验算,算到了2的70次方,结论都是对的。我看呢,大家都是走错了方向。
就把上述运算称作一个C运算吧:C(n)= n/2,若n为偶数;C(n) = 3n + 1,若n为奇数。显然,当初始值a为2的幂时,结论成立。下面对区间I(k) = [2^k, 2^(k+1))用归纳法证明。K = 0时显然。假设当初始值a在区间I(k)中时,结论成立;我们只要证明,区间I(k+1) 中的任何数b, 经过若干次C运算,结果必定落在I(k)或更小的I(j)上。
当b为偶数时,一次C运算就落在了I(k)中;对于奇数b, 把它写为二进制(2的幂次之和),在逐步验算之后,便可知结论成立。我只是验算了几个数,结果都对。
直接计算也是可行的。为此我搞出了一个混合(2, 3)进位制的表数法,为了乘3及除2计算的方便。我们知道有6进制,系数在0到5之间;把6的幂拆为2的幂与3的幂之积,任何一个正整数都可唯一表示为形如a(i,j)2^i 3^j 的一些数之和,其中,系数a(i,j)取值0或1,指数i与j之差小于或等于1,或者i = j+ 2. 有此便可直接证明了。
另外一个有趣的等价提法是,考虑C的逆运算;即从任何一个正整数出发,如果它是6m + 4的形式,就减1再除以3,否则都乘以2. 最后结果有两种:如果是从1,2,或4开始,那就落入循环;其它都是一个等比数列:(3^k)(2^n),n = 1, 2, 3, …。这也可以用混合(2,3)进位制来验算。
这类问题还可以作推广。搞出个(a, b)混合进位制的表数法,远比解决一个具体问题有意义得多。计算机的验证,纯粹是无聊人的游戏。