用C语言验证 “6174黑洞之谜”!万物始于C,编程世界的黑洞!

今儿跟大伙分享一个数字之谜——6174之谜,看看我们是怎么用C语言验证它的。

先简单介绍一些跟我们这个题目相关的背景知识。

黑洞,我想不少人都听说过,意思就是宇宙中的黑洞可以将任何物质,以及运行速度最快的光牢牢吸住,不使它们逃脱。

数学黑洞也是如此,也就是对于规定的数字来说,无论怎样设值,在规定的处理法则下,最终都将得到固定的一个值,再也跳不出去了,我们今天所说的“6174黑洞”就是这个意思。

1955年,印度数学家卡普耶卡(D.R.Kaprekar)研究了对四位数的一种变换:任给出四位数k0,用它的四个数字由大到小重新排列成一个四位数m,再减去它的反序数rev(m),得出数k1=m-rev(m)。

然后,继续对k1重复上述变换,得数k2。如此进行下去,卡普耶卡发现,无论k0是多大的四位数, 只要四个数字不全相同,最多进行7次上述变换,就会出现四位数6174。

这就是数学史上著名的“6174猜想”,也称为6174数字黑洞”,以上计算过程称为卡普雷卡尔运算,这个现象称归敛。

当然,这是4个数的情况,当数字个数为3的时候,循环值为495,也是著名的数学黑洞数字。今天我们只要想跟大家说的是如何用C语言验证6174黑洞。

那这个问题实际上抽象为:任意选一个四位数(数字不能全相同),把所有数字从大到小排列,再把所有数字从小到大排列,用前者减去后者得到一个新的数。重复对新得到的数进行上述操作,7步以内必然会得到6174。

请用C语言进行验证,并求出经过几次变换得到6174。

其实与本题类似的情况在浙大PAT中曾经出现过,解决总体思路比较简单,主要涉及排序和数字放入数组进行计算的相关情况,代码我们下面给出一种供大家参考,非唯一解,各位有好的方法可以留言一起交流。

#include <stdio.h>

int* sort(int number[],int len) //大到小的排序

{

  int a =0;

  for(int i=0; i<len; ++i)

  {

    for(int j=i+1;j<len;++j)

    {

      if(number[i] <number[j])

      {

        a = number[i];

        number[i] = number[j];

        number[j] = a;

      }

    }

  }

  return number; 

}

如果你想深度学习C语言以及高级编程——编程俱乐部【下图进入】!

涉及到:C语言、C++、windows编程、网络编程、QT界面开发、Linux编程、游戏编程、黑客等等......

程序员编程入门资料:

程序员​推荐学习书籍:

一个活跃、高逼格、高层次的程序员编程学习殿堂;编程入门只是顺带,思维的提高才有价值!

int convert(int number[],int ans)//每次变换得到的数字

{

  int *p = NULL;

  int m=0;

  number[0] = ans/1000;  //把这个数放入数组

  number[1] = ans%1000/100;

  number[2] = ans%100/10;

  number[3] = ans%10;

  p = sort(number,4);

  m=(*p*1000+*(p+1)*100+*(p+2)*10+*(p+3))- ( *(p+3)*1000+*(p+2)*100+*(p+1)*10+*p);

  return m;

}

int main(void)

{

  int number[4] = {0};

  int *p = NULL;

  int n = 0;

  int ans = 0;

  int count = 0;

  printf("请输入一个互不相同的四位数:");

  scanf("%d",&n);

  printf("%d-",n);

  ans = n;

  while(ans!=6174)

  {

    ans = convert(number,ans);

    printf("%d-",ans);

    ++count;

  }

  if(6174==ans)

    printf("%d\n",6174);

    printf("%d",count);

  return 0;

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容