@ 2007.01.08 , 21:25
26

神秘的数字6174

神秘的数字6174

1949年印度数学家D. R. Kaprekar 研究出一种四位数的变换:任意列出4个自然数(不能全部相同,如1111、2222),把这四个数字组成的最大四位数与最小四位数相减,得到的四个数字再用相同方式相减法(不足四位补0),几轮减下来最后得到的数字一定是6174

后来人们把这个问题称为‘6174 问题’或‘Kaprekar 变幻’。

比如:

5200 - 0025 = 5175
7551 - 1557 = 5994
9954 - 4599 = 5355
5553 - 3555 = 1998
9981 - 1899 = 8082
8820 - 0288 = 8532
8532 - 2358 = 6174
7641 - 1467 = 6174

链接 | 来源

4.7
赞一个 (37)

TOTAL COMMENTS: 26+1

  1. 我我神
    @10 years ago
    6536

    有点意思,很有技术含量

    OO [0] XX [2]
  2. vampire
    @10 years ago
    6556

    确实神奇

    OO [2] XX [2]
  3. 8381

    经测试不是伪科学

    OO [3] XX [1]
  4. 火星人
    @9 years ago
    59409

    这是可以经过数学证明出来的,哪位数学达人能给出证明过程???

    OO [2] XX [2]
  5. sibylkuo
    @8 years ago
    228267

    三位数也有:495

    五位数没有单独的一个数,但有两个死循环……

    OO [13] XX [5]
  6. 230560

    6+1+7+4=4+5+9=18

    OO [2] XX [2]
  7. 周拾柒
    @8 years ago
    255454

    有什么意义?

    OO [6] XX [2]
  8. 冷血
    @8 years ago
    262344

    1000-0001=999呵呵没有6174
    2580-0258=2332呵呵也没有哦

    OO [7] XX [34]
  9. 冷血
    @8 years ago
    262349

    呵呵点错了是2322不好意

    OO [1] XX [8]
  10. 301633

    证:四位数总共有104=10000个,其中除去四个数字全相同的,余下104-10=9990个数字不全相同.我们首先证明,变换T把这9990个数只变换成54个不同的四位数.
      设a、b、c、d是M的数字,并令:
      a≥b≥c≥d
      因为它们不全相等,上式中的等号不能同时成立.我们计算T(M)
      M(减)=1000a+100b+10c+d
      M(增)=1000d+100c+10b+a
      T(M)= D1= M(减)-M(增)=1000(a-d)+100(b-c)+10(c-b)+d-a=999(a-d)+90(b-c)
      我们注意到T(M)仅依赖于(a-d)与(b-c),因为数字a,b,c,d不全相等,因此由a≥b≥c≥d可推出;a-d>0而b-c≥0.
      此外b、c在a与d之间,所以a-d≥b-c,这就意味着a-d可以取1,2,…,9九个值,并且如果它取这个集合的某个值n,b-c只能取小于n的值,至多取n.
      例如,若a-d=1,则b-c只能在0与1中选到,在这种情况下,T(M)只能取值:
      999×(1)+90×(0)=0999
      999×(1)+90×(1)=1089
      类似地,若a-d=2, T(M)只能取对应于b-c=0,1,2的三个值.把a-d=1,a-d=2,…,a-d=9的情况下b-c所可能取值的个数加起来,我们就得到2+3+4+…+10=54
      这就是T(M)所可能取的值的个数.在54个可能值中,又有一部分是数码相同仅仅是数位不同的值,这些数值再变换T(M)中都对应相同的值(数学上称这两个数等价),剔除等价的因数,在T(M)的54个可能值中,只有30个是不等价的,它们是:
      9990,9981,9972,9963,9954,9810,9711,9621,9531,9441,8820,8730,8721,8640,8622,8550,
      8532,8442,7731,7641,7632,7551,7533,7443,6642,6552,6543,5553,5544.
      对于这30个数逐个地用上述法则把它换成最大与最小数的差,至多6步就出现6174这个数.证毕.

    OO [35] XX [1]
  11. 小饼子的媳妇儿
    @8 years ago
    302475

    @z: 你好强大~~~~~~~

    OO [0] XX [1]
  12. Jerome
    @7 years ago
    414383

    @冷血: 应该是这样的
    1000-0001=0999
    9990-0999=8991

    8532-2358=6174

    2580-0258=2332,这个应该是8520-0258=8262(最大四位数与最小四位数相减)

    OO [3] XX [1]
  13. 442809

    我数学不好 =△=|||||||

    OO [0] XX [1]
  14. LevenC21
    @6 years ago
    545899

    哈哈,我生日是7.16。。。

    OO [0] XX [4]
  15. 江河
    @6 years ago
    684027

    其实用c语言编个程序对每个四位数进行检测更方便。程序如下:(还可发现运算次数不会超过7次)
    #include
    using namespace std;
    int maxTo_min(int a);
    int minTo_max(int a);
    void main()
    {
    int Max,Min,result,steps;
    for(int i=1000;i<=9999;i++)
    {
    if(i%1111!=0)
    { Max=i;
    Min=i;
    steps=0;
    result=1000;
    cout<<“number:”<<i<<endl;
    while(result!=6174)
    {

    Max=maxTo_min(Max);
    Min=minTo_max(Min);
    cout<<“Max=”<<Max<<endl;
    cout<<“Min=”<<Min<<endl;
    result=Max-Min;
    cout<<“result=”<<result<<endl;
    cout<<result<<“=”<<Max<<“-“<<Min<<endl;
    Max=result;
    Min=result;
    steps++; //运算次数
    }

    cout<<“Times of subtract:”<<steps<<endl;
    cout<<endl;

    }

    }
    }

    int maxTo_min(int a) //按位从大到小排列子程序
    {
    int i[4],temp;

    i[0]=a/1000;
    i[1]=a/100-10*i[0];
    i[2]=a/10-100*i[0]-10*i[1];
    i[3]=a%10;
    for(int n=0;n<4;n++)
    {for(int j=0;j<3;j++)
    {
    if(i[j]<=i[j+1])
    {temp=i[j];
    i[j]=i[j+1];
    i[j+1]=temp;
    }
    }
    }
    a=i[0]*1000+i[1]*100+i[2]*10+i[3];
    return a;
    }

    int minTo_max(int a) //按位从小到大排列子程序
    {
    int i[4],temp;
    i[0]=a/1000;
    i[1]=a/100-10*i[0];
    i[2]=a/10-100*i[0]-10*i[1];
    i[3]=a%10;
    for(int n=0;n<4;n++)
    {for(int j=0;j=i[j+1])
    {temp=i[j];
    i[j]=i[j+1];
    i[j+1]=temp;
    }
    }
    }
    a=i[0]*1000+i[1]*100+i[2]*10+i[3];
    return a;
    }

    OO [5] XX [4]
  16. 江河
    @6 years ago
    684028

    @z: 至多7次

    OO [0] XX [1]
  17. 削着苹果走路
    @6 years ago
    796052

    最讨厌数学了= =

    OO [0] XX [1]
  18. 神秘代码
    @5 years ago
    869443

    天啊,你们好牛啊,能想到用c语言来证明的就更牛了。

    OO [0] XX [1]
  19. 月夜星光
    @5 years ago
    875005

    所给的数少一个:6444

    OO [1] XX [1]
  20. 910660

    1000好像没有

    OO [1] XX [3]
  21. 910661

    我的生日是6月17日幸运数字是4!!!怎么这么巧?!????????

    OO [0] XX [2]
  22. 鬼泣4→尼禄
    @5 years ago
    948270

    这个是数字黑洞……

    OO [0] XX [2]
  23. 1029546

    人才啊~~~

    OO [0] XX [1]
  24. 1867923

    黄金分割比例 0.618

    OO [0] XX [1]
  25. 数学爱好者
    @4 years ago
    1981948

    比如。随便一个数字 7711 最大是 7711 最小是 1177 那么 你相减在用相减的数字依次计算 最多7次你就可以算出来这个幽灵数字《6174》 当然一些人认为 这只是一个常识 或者一个普通的数字 但是如果你算出来了 你会觉得自己非常有成就感 这样你就会觉得数学好想不是那么的枯燥无味

    OO [1] XX [2]
  26. 盗梦者Vlin
    @10 months ago
    3067178

    其实巧妙之处在于6174这个数用组成的最大值减去最小值恰好得到本身,于是再怎么计算也是无限循环。试想任意取四个不全相同的数按照那种规矩无限计算下去,势必会产生含1.4.6.7的四位数,这时候再计算一轮,就可得到6174无限循环了。这算不上神奇,只是恰好6174可以利用7641-1467得到6174

    OO [1] XX [0]

发表评论


24H最赞