6174數(shù)學(xué)黑洞,即卡普雷卡爾(Kaprekar)常數(shù)。 任選4個不完全相同的數(shù)字(像1111就不行),讓“最大排列”減“最小排列”(例如8753-3578),不斷重復(fù)這個動作,最后一定會得到相同的結(jié)果:6174。 神奇的是:這個“最大減最小”的動作,最多不會超過7次! 我們先來看看五組實驗結(jié)果↓↓
請輸入一個互不相同的四位數(shù):3758
輸入的四位數(shù)是: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
經(jīng)過了7次最大減最小的動作
請輸入一個互不相同的四位數(shù):2517
輸入的四位數(shù)是:2517
第1次:7521 - 1257 = 6264
第2次:6642 - 2466 = 4176
第3次:7641 - 1467 = 6174
經(jīng)過了3次最大減最小的動作
請輸入一個互不相同的四位數(shù):6915
輸入的四位數(shù)是:6915
第1次:9651 - 1569 = 8082
第2次:8820- 288 = 8532
第3次:8532 - 2358 = 6174
經(jīng)過了3次最大減最小的動作
請輸入一個互不相同的四位數(shù):9073
輸入的四位數(shù)是: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
經(jīng)過了7次最大減最小的動作
請輸入一個互不相同的四位數(shù):5287
輸入的四位數(shù)是:5287
第1次:8752 - 2578 = 6174
經(jīng)過了1次最大減最小的動作
接下來,我們用C語言代碼進行驗證,代碼實現(xiàn)如下。
代碼實現(xiàn)
#include
intconvert(intnumber[],intans);
int*sort(intnumber[],intlen);
intmain(void)
{
intnumber[4]={0};
int*p=NULL;
intn=0;
intans=0;
intcount=0;
printf("請輸入一個互不相同的四位數(shù):");
scanf("%d",&n);
printf("輸入的四位數(shù)是:%d
",n);
ans=n;
while(ans!=6174)
{
ans=convert(number,ans);
printf("第%d次:%d
",count+1,ans);
++count;
}
printf("經(jīng)過了%d次最大減最小的動作
",count);
return0;
}
int*sort(intnumber[],intlen)//大到小的排序
{
inta=0;
for(inti=0;ifor(intj=i+1;jif(number[i]returnnumber;
}
intconvert(intnumber[],intans)//每次變換得到的數(shù)字
{
int*p=NULL;
intm=0;
number[0]=ans/1000;//把這個數(shù)放入數(shù)組
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);//最大數(shù)字減去最小數(shù)字
returnm;
}
運行結(jié)果:
責(zé)任編輯:xj
原文標(biāo)題:用C語言驗證“6174數(shù)學(xué)黑洞之謎”?
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
C語言
+關(guān)注
關(guān)注
183文章
7642瀏覽量
145111 -
數(shù)學(xué)
+關(guān)注
關(guān)注
0文章
99瀏覽量
19893
原文標(biāo)題:用C語言驗證“6174數(shù)學(xué)黑洞之謎”?
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
熱點推薦
C語言主要特點
C語言的主要特點有:
1.語言簡潔、緊湊,使用方便、靈活 。C語言一共只有32個關(guān)鍵字、9種控制語句,程序書寫形式自由,主要用小寫字母表示,
發(fā)表于 01-05 07:41
汽車網(wǎng)絡(luò)安全開發(fā)語言選型指南:C/C++/Rust/Java等主流語言對比+Perforce QAC/Klocwork工具支持
汽車網(wǎng)絡(luò)安全如何選編程語言?C、C++、Rust、Java……誰更適合AUTOSAR、ISO/SAE 21434?一文了解8種主流語言的優(yōu)劣與適用場景,以及Perforce QAC/K
如何用好 C 語言函數(shù)的返回值?
基本上,沒有人會將大段的C語言代碼全部塞入 main() 函數(shù)。更好的做法是按照復(fù)用率高、耦合性低的原則,盡可能的將代碼拆分不同的功能模塊,并封裝成函數(shù)。
C語言代碼的組合千變?nèi)f化,因
發(fā)表于 12-25 07:17
C語言特性
1、高效性:直接操作硬件
C 語言代碼的執(zhí)行效率極高,這是其最為顯著的優(yōu)勢之一。它能夠直接訪問硬件資源,與底層硬件進行緊密交互,充分發(fā)揮硬件的性能潛力。在嵌入式開發(fā)中,硬件資源往往十分有限,對程序
發(fā)表于 11-24 07:01
第4章 C語言基礎(chǔ)以及流水燈的實現(xiàn)(4.3 4.4)
4.3 C語言基本運算符 小學(xué)數(shù)學(xué)學(xué)過加、減、乘、除等運算符號以及四則混合運算,而這些運算符號在C語言中也有,但是有些表達方法不一樣,并且還
e203 DDR擴展功能驗證
將vivado設(shè)計的DDR擴展工程生成bitstream燒入到DDR200T中,利用芯來官方提供的Nuclei Studio編譯相應(yīng)的C語言程序進行驗證。C
發(fā)表于 10-21 09:24
主流的 MCU 開發(fā)語言為什么是 C 而不是 C++?
在單片機的地界兒里,C語言穩(wěn)坐中軍帳,C++想分杯羹?難嘍。咱電子工程師天天跟那針尖大的內(nèi)存空間較勁,C++那些花里胡哨的玩意兒,在這兒真玩不轉(zhuǎn)。先說內(nèi)存這道坎兒。您當(dāng)stm32f4的
深入理解C語言:C語言循環(huán)控制
在C語言編程中,循環(huán)結(jié)構(gòu)是至關(guān)重要的,它可以讓程序重復(fù)執(zhí)行特定的代碼塊,從而提高編程效率。然而,為了避免程序進入無限循環(huán),C語言提供了多種循環(huán)控制語句,如break、continue和
如何用C語言驗證“6174數(shù)學(xué)黑洞之謎”
評論