6174數(shù)學黑洞,即卡普雷卡爾(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é)果:
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
C語言
+關(guān)注
關(guān)注
180文章
7604瀏覽量
136694 -
數(shù)學
+關(guān)注
關(guān)注
0文章
99瀏覽量
19235
原文標題:用C語言驗證“6174數(shù)學黑洞之謎”?
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
C語言與Java語言的對比
C語言和Java語言都是當前編程領(lǐng)域中的重要成員,它們各自具有獨特的優(yōu)勢和特點,適用于不同的應(yīng)用場景。以下將從語法特性、內(nèi)存管理、跨平臺性、性能、應(yīng)用領(lǐng)域等多個方面對C
C語言與其他編程語言的比較
C語言作為一種歷史悠久的編程語言,自其誕生以來,一直在軟件開發(fā)領(lǐng)域扮演著重要角色。它以其高效、靈活和可移植性強的特點,成為了系統(tǒng)級編程的首選語言之一。
如何用java語言開發(fā)一套數(shù)字化產(chǎn)科系統(tǒng)? 數(shù)字化產(chǎn)科管理平臺源碼
如何用java語言開發(fā)一套數(shù)字化產(chǎn)科系統(tǒng) 數(shù)字化產(chǎn)科管理平臺源碼
按照這樣學習C語言,成為卷王不是夢!
在計算機編程領(lǐng)域,C語言被譽為一種強大而靈活的編程語言,掌握好C語言不僅可以讓你輕松駕馭各種編程任務(wù),還能夠為你的職業(yè)生涯打下堅實的基礎(chǔ)。但
PLC編程語言和C語言的區(qū)別
在工業(yè)自動化和計算機編程領(lǐng)域中,PLC(可編程邏輯控制器)編程語言和C語言各自扮演著重要的角色。盡管兩者都是編程語言,但它們在多個方面存在顯著的區(qū)別。本文將從多個維度深入探討PLC編程
如何用C語言實現(xiàn)高效查找(二分法)
今天給分享一下使用C語言實現(xiàn)二分算法,主要包含以下幾部分內(nèi)容:二分查找算法介紹二分查找算法使用場景二分查找算法代碼實現(xiàn)二分查找算法實現(xiàn)過程用C語言實現(xiàn)二分法查找二分查找也稱折半查找
C語言基礎(chǔ)-為什么要使用C?
當今最流行的 Linux 操作系統(tǒng)和 RDBMS(Relational Database Management System:關(guān)系數(shù)據(jù)庫管理系統(tǒng)) MySQL 都是使用 C 語言編寫的。
發(fā)表于 03-25 11:20
?433次閱讀
C語言#define的應(yīng)用
在 C/C++ 編程語言中,當程序被編譯時,被發(fā)送到編譯器,編譯器將程序轉(zhuǎn)換為機器語言,然后完成編譯并執(zhí)行該程序。預(yù)處理器也稱為宏預(yù)處理器。
發(fā)表于 03-06 11:29
?375次閱讀
plc編程語言與c語言的聯(lián)系 c語言和PLC有什么區(qū)別
PLC編程語言與C語言的聯(lián)系 PLC(可編程邏輯控制器)是一種針對自動化控制系統(tǒng)的特殊計算機。PLC編程語言是為了控制和管理自動化生產(chǎn)過程中的各種設(shè)備而設(shè)計的。與之相比,
c語言,c++,java,python區(qū)別
C語言、C++、Java和Python是四種常見的編程語言,各有優(yōu)點和特點。 C語言:
vb語言和c++語言的區(qū)別
VB語言和C++語言是兩種不同的編程語言,雖然它們都屬于高級編程語言,但在設(shè)計和用途上有很多區(qū)別。下面將詳細比較VB
如何解決C語言中的“訪問權(quán)限沖突”異常?C語言引發(fā)異常原因分析
如何解決C語言中的“訪問權(quán)限沖突”異常?C語言引發(fā)異常原因分析? 在C語言中,訪問權(quán)限沖突異常通
怎么寫出效率高、思路清晰的C語言程序?
要用C語言的思維方式來進行程序的構(gòu)架構(gòu)建
要有良好的C語言算法基礎(chǔ),以此來實現(xiàn)程序的邏輯構(gòu)架
靈活運用C
評論