论文部分内容阅读
摘 要:对于特殊的自然数196的回文数猜想是一个著名的数学命题,到目前为止尚未得到证实。在字长为64位的计算机上,采用matlab编程,如果使用整型变量进行处理,会在很大程度上受到数字位数的影响,代码又长运算的步数又少。为了继续检验,提出了用字符串来存储原数、新数和逆序数的matlab新算法,突破了字长的限制,可以达到上亿步的运算量。
关键词:matlab ;回文数;自然数196
中图分类号:TP301.6 文献标识码:A 文章编号:1004-7344(2018)12-0291-01
引 言
一个自然数和它的逆序数相等称为回文数,例如:1441、189981、65456等。回文数猜想是一个著名的数学命题:从任意一个两位或两位以上的自然数开始,将这个数与它的逆序数相加,得到一个新数,再用这个新数与它的逆序数相加,不断重复上述操作,经过若干步的逆序相加之后,总可以得到一个回文数。例如:
所选的数是67,经过两步就可以得到一个回文数484:
67+67=143
143+341=484
把69变成一个回文数则需要四步:
69+96=165
165+561=726
726+627=1353
1353+3531=4884
几乎所有的自然数,按照上述规则不断加下去,总可以找到对应的回文数,但是,对于自然数196,据报道,有人已经对196进行了50000步的逆序相加,仍然未出现回文数,这个数学猜想到目前为止还没有得到证实。
要攻克一个数学猜想,可以从两个方面考虑,一方面从理论上证明它的正确性,另一方面从实驗上检验它的存在性。但是,对于一个著名的数学猜想来说,如果要想从理论上证明它的正确性,是一件很困难的事,而想从实验上检验它的存在性,则需要进行成千上万的计算。因此,想通过实验检验它的存在性,人工手算是不太现实的,但计算机是在局部范围内检验一个数学命题是否是正确的最好工具,而matlab是一款很好的数学分析编程软件。本文叙述如何修改matlab算法来扩大自然数196的计算量。
1 主程序设计
设计一个循环结构判断原数与逆序数之和是否为回文数直到满足要求,退出循环输出此回文数。
2 计算196回文数算法
2.1 用clc,clear两条语句初始化matlab环境
clear:清空matlab内存。
clc:清空命令窗口输入的命令。
这两条语句一起使用,起到“初始化”的作用,防止之前的结果对新脚本文件(.m)产生干扰。
2.2 用for语句实现循环
在matlab中的for语句格式如下:
for i=1:n(n为循环的次数)
循环内容
end(结束循环的标志)
2.3 num2str函数
函数的功能:
把数值转换成字符串,转换后的可以使用fprintf或disp函数进行输出。
语法格式:
str=num2str(A) (A指任意一个数值)
2.4 str2num函数
函数的功能:
把字符串转换成数值
语法格式:
s=str2num(str) (str是一个字符串)
2.5 取整函数
向上取整函数:ceil
向下取整函数:floor
2.6 用if语句实现回文数的判断
if语句在matlab中的语法格式:
if 条件
如果满足条件执行此项内容
else
如果不满足条件执行此项内容
end
3 测试分析
在matlab上测试可得:
由此可知该方法可行性高,借助超级计算机有望将所求的回文数找到。
4 算法优点
该算法基于matlab的程序简短,可读性高,可移植性高,运行时间短,突破了数字位数的限制,运算量可以达到上亿次。
5 结束语
本文利用matlab编程,用字符串来存储原数、新数和逆序数,程序简短,可便捷的实现计算机自动找回文数,突破了字长的限制,可以达到上亿步的计算量,为进一步检验自然数196是否存在回文数提供了一种有效的方法。
参考文献
[1]白鸿武.回文数的猜想[J].宝鸡文理学报(自然科学版),2001,21(2):109~111.
[2]高俊斌.MATLAB5.0语言与程序设计.
[3]张 拯.基于VC的回文数猜想的检验算法.电脑开发与应用.
[4]孔令德.自然数196的回文数猜想检验的新算法.2007:28~24.
[5]李南楠.matlab7简明教程.
[6]王正林.精通matlab7.
[7]李 强.matlab数据处理与应用.
收稿日期:2018-3-26
关键词:matlab ;回文数;自然数196
中图分类号:TP301.6 文献标识码:A 文章编号:1004-7344(2018)12-0291-01
引 言
一个自然数和它的逆序数相等称为回文数,例如:1441、189981、65456等。回文数猜想是一个著名的数学命题:从任意一个两位或两位以上的自然数开始,将这个数与它的逆序数相加,得到一个新数,再用这个新数与它的逆序数相加,不断重复上述操作,经过若干步的逆序相加之后,总可以得到一个回文数。例如:
所选的数是67,经过两步就可以得到一个回文数484:
67+67=143
143+341=484
把69变成一个回文数则需要四步:
69+96=165
165+561=726
726+627=1353
1353+3531=4884
几乎所有的自然数,按照上述规则不断加下去,总可以找到对应的回文数,但是,对于自然数196,据报道,有人已经对196进行了50000步的逆序相加,仍然未出现回文数,这个数学猜想到目前为止还没有得到证实。
要攻克一个数学猜想,可以从两个方面考虑,一方面从理论上证明它的正确性,另一方面从实驗上检验它的存在性。但是,对于一个著名的数学猜想来说,如果要想从理论上证明它的正确性,是一件很困难的事,而想从实验上检验它的存在性,则需要进行成千上万的计算。因此,想通过实验检验它的存在性,人工手算是不太现实的,但计算机是在局部范围内检验一个数学命题是否是正确的最好工具,而matlab是一款很好的数学分析编程软件。本文叙述如何修改matlab算法来扩大自然数196的计算量。
1 主程序设计
设计一个循环结构判断原数与逆序数之和是否为回文数直到满足要求,退出循环输出此回文数。
2 计算196回文数算法
2.1 用clc,clear两条语句初始化matlab环境
clear:清空matlab内存。
clc:清空命令窗口输入的命令。
这两条语句一起使用,起到“初始化”的作用,防止之前的结果对新脚本文件(.m)产生干扰。
2.2 用for语句实现循环
在matlab中的for语句格式如下:
for i=1:n(n为循环的次数)
循环内容
end(结束循环的标志)
2.3 num2str函数
函数的功能:
把数值转换成字符串,转换后的可以使用fprintf或disp函数进行输出。
语法格式:
str=num2str(A) (A指任意一个数值)
2.4 str2num函数
函数的功能:
把字符串转换成数值
语法格式:
s=str2num(str) (str是一个字符串)
2.5 取整函数
向上取整函数:ceil
向下取整函数:floor
2.6 用if语句实现回文数的判断
if语句在matlab中的语法格式:
if 条件
如果满足条件执行此项内容
else
如果不满足条件执行此项内容
end
3 测试分析
在matlab上测试可得:
由此可知该方法可行性高,借助超级计算机有望将所求的回文数找到。
4 算法优点
该算法基于matlab的程序简短,可读性高,可移植性高,运行时间短,突破了数字位数的限制,运算量可以达到上亿次。
5 结束语
本文利用matlab编程,用字符串来存储原数、新数和逆序数,程序简短,可便捷的实现计算机自动找回文数,突破了字长的限制,可以达到上亿步的计算量,为进一步检验自然数196是否存在回文数提供了一种有效的方法。
参考文献
[1]白鸿武.回文数的猜想[J].宝鸡文理学报(自然科学版),2001,21(2):109~111.
[2]高俊斌.MATLAB5.0语言与程序设计.
[3]张 拯.基于VC的回文数猜想的检验算法.电脑开发与应用.
[4]孔令德.自然数196的回文数猜想检验的新算法.2007:28~24.
[5]李南楠.matlab7简明教程.
[6]王正林.精通matlab7.
[7]李 强.matlab数据处理与应用.
收稿日期:2018-3-26