打字猴:1.701005449e+09
1701005449 我和数学有约:趣味数学及算法解析 [:1701004186]
1701005450 我和数学有约:趣味数学及算法解析 3.2 数字黑洞
1701005451
1701005452 【问题】什么是数字黑洞?
1701005453
1701005454 【分析】
1701005455
1701005456 任意选一个四位数(数字不能全相同),把所有数字从大到小排列,再把所有数字从小到大排列,用前者减去后者得到一个新的数。重复对新得到的数进行上述操作,7步以内必然会得到6174。
1701005457
1701005458 例如,选择四位数6767:
1701005459
1701005460 7766-6677=1089
1701005461
1701005462 9810-0189=9621
1701005463
1701005464 9621-1269=8352
1701005465
1701005466 8532-2358=6174
1701005467
1701005468 7641-1467=6174
1701005469
1701005470 ……
1701005471
1701005472 6174这个数字黑洞就叫做Kaprekar常数。
1701005473
1701005474 对于三位数,也有一个数字黑洞——495。
1701005475
1701005476 974–479=495
1701005477
1701005478 954–459=495
1701005479
1701005480 954–459=495
1701005481
1701005482 ……
1701005483
1701005484 495即为三位数的数字黑洞。
1701005485
1701005486 采用MATLAB软件编程验证如下:
1701005487
1701005488     clc,clear,close all         %清屏和清除变量    warning off                 %消除警告    %数字黑洞    a = 6767;                   %974,可修改    a1 = num2str(a);            %数值型转字符串型    n = length(a1);             %字符长度    for i=1:n        a2(i)=str2num(a1(i));   %将每一个字符依次转化为数值型,保存到a2数组    end    if n==4  %四位数        a3 = sort(a2,‘descend’);     %从大到小排列        a33 = a3(1) *1000+a3(2) *100+a3(3) *10+a3(4);        a4 = sort(a2,‘ascend’);      %从小到大排列        a44 = a4(1) *1000+a4(2) *100+a4(3) *10+a4(4);        for i=1:7            a5 = a33 - a44;          %差            a1 = num2str(a5);        %数值型转字符型            n = length(a1);          %字符长度            for i=1:n                a2(i)=str2num(a1(i)); %将每一个字符依次转化为数值型,保存到a2数组            end            disp([num2str(a33),’-‘,num2str(a44),’=’,num2str(a5)]);    %显示            a3 = sort(a2,‘descend’);                             %从大到小排列            a33 = a3(1) *1000+a3(2) *100+a3(3) *10+a3(4);            a4 = sort(a2,‘ascend’);                             %从小到大排列            a44 = a4(1) *1000+a4(2) *100+a4(3) *10+a4(4);        end    end    if n==3  %三位数        a3 = sort(a2,‘descend’);               %从大到小排列        a33 = a3(1) *100+a3(2) *10+a3(3) *1;        a4 = sort(a2,‘ascend’);                %从小到大排列        a44 = a4(1) *100+a4(2) *10+a4(3) *1;        for i=1:7            a5 = a33 - a44;            a1 = num2str(a5);          %数值型转字符型            n = length(a1);            %长度            for i=1:n                a2(i)=str2num(a1(i));  %将每一个字符依次转化为数值型,保存到a2数组            end            disp([num2str(a33),’-‘,num2str(a44),’=’,num2str(a5)]);    %显示            a3 = sort(a2,‘descend’);                                  %从大到小排列            a33 = a3(1) *100+a3(2) *10+a3(3) *1;            a4 = sort(a2,‘ascend’);                                   %从小到大排列            a44 = a4(1) *100+a4(2) *10+a4(3) *1;                      %三位数        end    end
1701005489
1701005490 运行程序输出结果如下:
1701005491
1701005492     >>a = 6767;  %974    7766-6677=1089    9810-189=9621    9621-1269=8352    8532-2358=6174    7641-1467=6174    7641-1467=6174    7641-1467=6174        >>a = 974;  %6767    974-479=495    954-459=495    954-459=495    954-459=495    954-459=495    954-459=495    954-459=495
1701005493
1701005494
1701005495
1701005496
1701005497 我和数学有约:趣味数学及算法解析 [:1701004187]
1701005498 我和数学有约:趣味数学及算法解析 3.3 3x+1问题
[ 上一页 ]  [ :1.701005449e+09 ]  [ 下一页 ]