第二十六讲 (回文数)

二月 24, 2019

“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这样的特征,成为回文数(palindrome number)。

设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数。

回文数是指正着读、反着读,都相同的数字。例如,12321、2332等。有一个寻找回文数的算法如下:

随意找一个自然数,把它的各位数字由后往前重新排列得到一个倒序数,把这两个数相加得到一个和数。如此反复若干次,这个和数就是一个回文数。

例如,把自然数96按上述算法得到回文数的过程如下:

96+69=165 165+561=726 726+627=1353 1353+3531=4884

这里需要4步就得到一个回文数4884。请编写程序,实现寻找回文数的算法。

编程思路

这个算法在数学上尚未证明,仍然是一个猜想。可以编写程序来验证这个猜想。该程序接受用户输入一个自然数,然后将它转换成一个回文数,同时把转换的过程显示出来。

程序清单

单击绿旗运行程序,输入一个自然数:8848。程序执行后会在“日志”中显示出转换过程,最终得到一个回文数:665566。

试一试

随意输入一些自然数,看看是否都能转换为回文数。

如果输入自然数196,将可能得不到回文数,你可以试一试。

小知识

像196这样按照上述回文数算法进行变换而无法得到回文数的自然数,称为利克瑞尔数(Lychrel Number)。但是人们至今未找到一个未找到一个利克瑞尔数,196这个数仅是第一个可能的利克瑞尔数。有人将196按照上述算法变换了数十万次仍然没有得到回文数,而且既不能肯定继续运算下去是否永远得不到回文数,也不知道再运算多少次才能最终得到回文数。

能力橙版权所有

请勿转载

第二十五讲 (书生分卷)少儿编程小课:第五十八课(自由落体)