摘 要:對(duì)于特殊的自然數(shù)196的回文數(shù)猜想是一個(gè)著名的數(shù)學(xué)命題,到目前為止尚未得到證實(shí)。在字長(zhǎng)為64位的計(jì)算機(jī)上,采用matlab編程,如果使用整型變量進(jìn)行處理,會(huì)在很大程度上受到數(shù)字位數(shù)的影響,代碼又長(zhǎng)運(yùn)算的步數(shù)又少。為了繼續(xù)檢驗(yàn),提出了用字符串來存儲(chǔ)原數(shù)、新數(shù)和逆序數(shù)的matlab新算法,突破了字長(zhǎng)的限制,可以達(dá)到上億步的運(yùn)算量。
關(guān)鍵詞:matlab ;回文數(shù);自然數(shù)196
中圖分類號(hào):TP301.6 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1004-7344(2018)12-0291-01
引 言
一個(gè)自然數(shù)和它的逆序數(shù)相等稱為回文數(shù),例如:1441、189981、65456等?;匚臄?shù)猜想是一個(gè)著名的數(shù)學(xué)命題:從任意一個(gè)兩位或兩位以上的自然數(shù)開始,將這個(gè)數(shù)與它的逆序數(shù)相加,得到一個(gè)新數(shù),再用這個(gè)新數(shù)與它的逆序數(shù)相加,不斷重復(fù)上述操作,經(jīng)過若干步的逆序相加之后,總可以得到一個(gè)回文數(shù)。例如:
所選的數(shù)是67,經(jīng)過兩步就可以得到一個(gè)回文數(shù)484:
67+67=143
143+341=484
把69變成一個(gè)回文數(shù)則需要四步:
69+96=165
165+561=726
726+627=1353
1353+3531=4884
幾乎所有的自然數(shù),按照上述規(guī)則不斷加下去,總可以找到對(duì)應(yīng)的回文數(shù),但是,對(duì)于自然數(shù)196,據(jù)報(bào)道,有人已經(jīng)對(duì)196進(jìn)行了50000步的逆序相加,仍然未出現(xiàn)回文數(shù),這個(gè)數(shù)學(xué)猜想到目前為止還沒有得到證實(shí)。
要攻克一個(gè)數(shù)學(xué)猜想,可以從兩個(gè)方面考慮,一方面從理論上證明它的正確性,另一方面從實(shí)驗(yàn)上檢驗(yàn)它的存在性。但是,對(duì)于一個(gè)著名的數(shù)學(xué)猜想來說,如果要想從理論上證明它的正確性,是一件很困難的事,而想從實(shí)驗(yàn)上檢驗(yàn)它的存在性,則需要進(jìn)行成千上萬的計(jì)算。因此,想通過實(shí)驗(yàn)檢驗(yàn)它的存在性,人工手算是不太現(xiàn)實(shí)的,但計(jì)算機(jī)是在局部范圍內(nèi)檢驗(yàn)一個(gè)數(shù)學(xué)命題是否是正確的最好工具,而matlab是一款很好的數(shù)學(xué)分析編程軟件。本文敘述如何修改matlab算法來擴(kuò)大自然數(shù)196的計(jì)算量。
1 主程序設(shè)計(jì)
設(shè)計(jì)一個(gè)循環(huán)結(jié)構(gòu)判斷原數(shù)與逆序數(shù)之和是否為回文數(shù)直到滿足要求,退出循環(huán)輸出此回文數(shù)。
2 計(jì)算196回文數(shù)算法
2.1 用clc,clear兩條語句初始化matlab環(huán)境
clear:清空matlab內(nèi)存。
clc:清空命令窗口輸入的命令。
這兩條語句一起使用,起到“初始化”的作用,防止之前的結(jié)果對(duì)新腳本文件(.m)產(chǎn)生干擾。
2.2 用for語句實(shí)現(xiàn)循環(huán)
在matlab中的for語句格式如下:
for i=1:n(n為循環(huán)的次數(shù))
循環(huán)內(nèi)容
end(結(jié)束循環(huán)的標(biāo)志)
2.3 num2str函數(shù)
函數(shù)的功能:
把數(shù)值轉(zhuǎn)換成字符串,轉(zhuǎn)換后的可以使用fprintf或disp函數(shù)進(jìn)行輸出。
語法格式:
str=num2str(A) (A指任意一個(gè)數(shù)值)
2.4 str2num函數(shù)
函數(shù)的功能:
把字符串轉(zhuǎn)換成數(shù)值
語法格式:
s=str2num(str) (str是一個(gè)字符串)
2.5 取整函數(shù)
向上取整函數(shù):ceil
向下取整函數(shù):floor
2.6 用if語句實(shí)現(xiàn)回文數(shù)的判斷
if語句在matlab中的語法格式:
if 條件
如果滿足條件執(zhí)行此項(xiàng)內(nèi)容
else
如果不滿足條件執(zhí)行此項(xiàng)內(nèi)容
end
3 測(cè)試分析
在matlab上測(cè)試可得:
由此可知該方法可行性高,借助超級(jí)計(jì)算機(jī)有望將所求的回文數(shù)找到。
4 算法優(yōu)點(diǎn)
該算法基于matlab的程序簡(jiǎn)短,可讀性高,可移植性高,運(yùn)行時(shí)間短,突破了數(shù)字位數(shù)的限制,運(yùn)算量可以達(dá)到上億次。
5 結(jié)束語
本文利用matlab編程,用字符串來存儲(chǔ)原數(shù)、新數(shù)和逆序數(shù),程序簡(jiǎn)短,可便捷的實(shí)現(xiàn)計(jì)算機(jī)自動(dòng)找回文數(shù),突破了字長(zhǎng)的限制,可以達(dá)到上億步的計(jì)算量,為進(jìn)一步檢驗(yàn)自然數(shù)196是否存在回文數(shù)提供了一種有效的方法。
參考文獻(xiàn)
[1]白鴻武.回文數(shù)的猜想[J].寶雞文理學(xué)報(bào)(自然科學(xué)版),2001,21(2):109~111.
[2]高俊斌.MATLAB5.0語言與程序設(shè)計(jì).
[3]張 拯.基于VC的回文數(shù)猜想的檢驗(yàn)算法.電腦開發(fā)與應(yīng)用.
[4]孔令德.自然數(shù)196的回文數(shù)猜想檢驗(yàn)的新算法.2007:28~24.
[5]李南楠.matlab7簡(jiǎn)明教程.
[6]王正林.精通matlab7.
[7]李 強(qiáng).matlab數(shù)據(jù)處理與應(yīng)用.
收稿日期:2018-3-26