6174C语言编程,C语言代码实现:6174数学黑洞(卡普雷卡尔常数)

1:6174数学黑洞现象

,即常数。

任选4个不完全相同的数字(,如1111就不行),让减(例如8753-3578),不断重复这个动作,最后一定会得到相同的结果:。

神奇的是:这个“最大减最小”的动作,最多!

2:现象复现

我们先来看看五组实验结果:

请输入一个互不相同的四位数:3758

输入的四位数是:3758

第1次:8753 - 3578 = 5175

第2次: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

第1次:7521 - 1257 = 6264

第2次:6642 - 2466 = 4176

第3次:7641 - 1467 = 6174

经过了3次最大减最小的动作

请输入一个互不相同的四位数:6915

输入的四位数是:6915

第1次:9651 - 1569 = 8082

第2次:8820 - 288 = 8532

第3次:8532 - 2358 = 6174

经过了3次最大减最小的动作

请输入一个互不相同的四位数:9073

输入的四位数是:9073

第1次:9730 - 379 = 9351

第2次:9531 - 1359 = 8172

第3次:8721 - 1278 = 7443

第4次:7443 - 3447 = 3996

第5次:9963 - 3699 = 6264

第6次:6642 - 2466 = 4176

第7次:7641 - 1467 = 6174

经过了7次最大减最小的动作

请输入一个互不相同的四位数:5287

输入的四位数是:5287

第1次:8752 - 2578 = 6174

经过了1次最大减最小的动作

3:C语言代码的实现

接下来,我们用C语言代码进行验证,代码实现如下:

//代码实现

#include

int convert(int number[],int ans);

int *sort(int number[],int len);

int main(void)

{

int number[4] = {};

int *p = NULL;

int n = ;

int ans = ;

int count = ;

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

scanf("%d",&n);

printf("输入的四位数是:%d\n",n);

ans = n;

while(ans!=6174)

{

ans = convert(number,ans);

printf("第%d次:%d\n",count+1,ans);

++count;

}

printf("经过了%d次最大减最小的动作\n",count);

return ;

}

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

{

int a =;

for(int i=; i

{

for(int j=i+1;j

{

if(number[i]

{

a = number[i];

number[i] = number[j];

number[j] = a;

}

}

}

return number;

}

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

{

int *p = NULL;

int m=;

number[] = 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;

}

运行结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值