打字猴:1.701005637e+09
1701005637
1701005638
1701005639
1701005640 严格上来讲,如图3-1所示的天然幻方不是幻方,因为幻方不包含重复的数字。然而忽略这个约束,从到这18个分数的小数循环节是神奇的,特别是对于第一列和第一行的数字,从0~9依次排序的,足见其奇幻。
1701005641
1701005642
1701005643
1701005644
1701005645 我和数学有约:趣味数学及算法解析 [:1701004191]
1701005646 我和数学有约:趣味数学及算法解析 3.7 回文数
1701005647
1701005648 【问题】什么是回文数?
1701005649
1701005650 【分析】
1701005651
1701005652 一个数正读反读都一样,我们就把它叫做“回文数”。随便选一个数,不断加上把它反过来写之后得到的数,直到得出一个回文数为止。
1701005653
1701005654 例如,所选的数是67,两步就可以得到一个回文数484:
1701005655
1701005656 67+76=143
1701005657
1701005658 143+341=484
1701005659
1701005660 把69变成一个回文数则需要四步:
1701005661
1701005662 69+96=165
1701005663
1701005664 165+561=726
1701005665
1701005666 726+627=1353
1701005667
1701005668 1353+3531=4884
1701005669
1701005670 89的“回文数之路”则特别长,要到第24步才会得到第一个回文数——8813200023188。
1701005671
1701005672 我们或许会想,不断地“一正一反相加”,最后将总能得到一个回文数,即对于几乎所有的数,按照规则不断加下去,迟早会出现回文数。
1701005673
1701005674 不过,196却是一个相当引人注目的例外。数学家们已经用计算机算到了3亿多位数,都没有产生过一次回文数。从196出发,究竟能否加出回文数来?这至今仍是个谜。
1701005675
1701005676 基于此流程,编写回文数迭代MATLAB程序如下:
1701005677
1701005678     function ysw3_3    clc,clear,close all        %清屏和清除变量    warning off                %消除警告        a=89;                  %输入一个数字        b = num2str(a);        %字符格式        c = swap(b);           %方向取反  1234 —> 4321        d = str2num(c);        %数字格式        if a==d            return;        else            d = 0;            d1 = 1;            %字符格式            d2 = 2;            %方向取反  1234 —> 4321            d3 = 3;            %数字格式            while d~=d3                d = d+a;                d1 = num2str(d);     %字符格式                d2 = swap(d1);       %方向取反  1234 —> 4321                d3 = str2num(d2);    %数字格式                 a = d3;            end            disp([‘回文数:  ‘,num2str(d3)])        end            end        function MA=swap(ma)         %该函数实现数字的倒序,如1234 —> 4321    ma1=ma;                      %赋值    Nma=size(ma,2);              %列大小    maij=(Nma(1,1):-1:1)’;    [ma(1,:),ma(maij)] = deal(ma(1,maij),ma(1,:));   %deal函数交换顺序    MA=ma;                       %赋值    ma=ma1;                      %赋值    end
1701005679
1701005680 运行程序输出结果如下:
1701005681
1701005682     a=89;                       %输入一个数字    回文数:  8813200023188    a=67;                       %输入一个数字    回文数:  484    a=69;                       %输入一个数字    回文数:  4884    a=17;                       %输入一个数字    回文数:  88
1701005683
1701005684
1701005685
1701005686
[ 上一页 ]  [ :1.701005637e+09 ]  [ 下一页 ]