跳至内容
深圳市捷比信实业有限公司 · 产品选型与采购咨询联系业务人员
超小封装电容捷比信 · 专业器件主题站

如何使用C语言来验证“ 6174数学黑洞之谜”。

6174数学黑洞,即Kaprekar(Kaprekar)常数。选择不完全相同(不像1111)的4个数字,使“最大排列”为0。减去“最小布置”; (例如8753-3578),一次又一次地重复此操作,最后得到相同的结果:6174。动作最多不会超过7次!让我们看一下五组实验的结果。 ↓↓请输入一个不同的四位数数字:3758。输入的四位数数字是:3758。第一次输入:8753-3578 = 5175。第二次:7551-1557 = 5994。 3次:9954-4599 = 5355第4次:5553-3555 = 1998第5次:9981-1899 = 8082第6次:8820-288 = 8532第7次:8532-2358 = 6174在最大减少7次之后,对于最小的动作,请输入一个不同的四位数:2517输入的四位数是:2517第一次:7521-1257 = 6264二次:6642-2466 = 4176三次:7641-1467 = 6174经过3倍的最大缩减和最小操作数,请输入一个不同的四位数:6915输入的四位数是:6915第一次:9651-1569 = 8082第二次:8820-288 = 8532三次:8532-2358 = 6174之后最大减少次数和最小动作次数的3倍,请输入不同的四位数:9073输入的四位数是:9073第一次:9730-379 = 9351第二次:9531 1359 = 8172第三次:8721-1278 = 7443第四次:7443-3447 = 3996第五次:9963-3699 = 6264第六次:6642-2466 = 4176第七次:7641-1467 = 6174通过请为7的最大减少量输入一个不同的四位数最小动作:5287输入的四位数字是:5287第一次输入:8752-2578 = 6174经过1次最大减少和最小动作后,我们将使用C语言代码进行验证,并且该代码实现如下。代码实现#includeintconvert(intnumber [],intans); int * sort(intnumber [],intlen); intmain(void){intnumber [4] = {0}; int * p = NULL; intn = 0; intans = 0 ; intcount = 0; printf(“请输入一个不同的四位数字:”); scanf(“%d”,& n); printf(“输入的四位数字是:%d” ,n); ans = n; while(ans!= 6174){ans = convert(number,ans); printf(“%d time:%d”,count + 1,ans); ++ count;} printf (“%dd最大动作和最小动作”,计数); return0;} int * sort(intnumber [],intlen)//从大到小排序{inta = 0; for(inti = 0; ifor(intj = i) +1; jif(number [i] returnnumber;} intconvert(intnumber [],intans)//每次转换获得的数字{int * p = NULL; intm = 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); //最大数减去最小数returnm;}运行结果: