水仙花數

2021-02-19 52數學網

近日,筆者的學生問了筆者這樣一道題:

求滿足的所有三位數,以及滿足的所有四位數。

從解題角度來說,這題目做起來是比較繁瑣的,但是這些數具有的奇妙性質,值得我們來對此加以研究

1³+5³+3³=1+125+27=153

3³+7³+0³=27+343+0=370

3³+7³+1³=27+343+1=371

4³+0³+7³=64+0+343=407

14+64+34+44=1634

84+24+04+84=8208

94+44+94+74=9497

這些等於各位數字n次方之和的n位數,我們稱其為自冪數或者超完全數字不變數(pluperfect digital invariant, PPDI)。

 

由於其性質的形式,從自身出發,又回到了自身,由這種只鍾愛自己的性質,所以我們又稱其為自戀數(narcissistic number)。

 

在英語中,自戀(narcissistic)一詞來源於希臘神話人物納西索斯(Narcissus):

美少年納西索斯(Narcissus)是河神(Cephissus)與林間仙女(Liriope)的兒子。他的出生伴隨著一個來自先知Tiresias的奇特預言。預言說,如果納西索斯想要長命百歲,那麼他就決不能見到自己的影像。於是,帶著這樣一個預言,納西索斯漸漸長大,成為全希臘最俊美的男子。無數的少女對他一見傾心,可他卻無情地拒絕了所有的人。

伊可(Echo)本來也是一個美麗的山中仙女,但納西索斯仍然像拒絕其他人一樣拒絕了她。伊可十分傷心,整日在幽靜的山林中流淚徘徊,不吃不喝,很快地消瘦下去。最後,她的身體終於完全消失,只剩下憂鬱而輕柔的聲音在山谷中迴蕩。無論是何人對她呼喊,她都只重複對方的話語,從不作自己的回答。此後,希臘人便用伊可的名字(Echo)來表示「回聲」。

眾神憤怒了,決定讓納西索斯去承受痛苦:愛上別人,卻不能以被愛作為回報。有一天納西索斯無意間來到一個池塘邊。池塘的水清澈明淨,如同一面光潔的鏡子。納西索斯俯身鞠水,卻見到了自己在水中的倒影—— 一個比他以前見過的任何人都更加俊秀的少年。他瘋狂地愛上了他,無數次將手伸入水中,想要擁抱自己的愛人,可每一次的水波蕩漾都使他重新陷入絕望。他再也無法忍受這種痛苦,終於跳入池塘,溺水而死。出於同情,眾神讓他的身體化作一朵晶瑩剔透,出水而立的水仙花(narcissus)。

於是,前輩研究者們給這種數起了一個好聽的名字:水仙花數

 

顯然,水仙花數的個數是有限個的,最先給出證明的是伯納德

對於n位數:

於是10n-1≤Pn≤9×n9

顯然,兩個等號不可能同時成立

10n-1≤n≤9n

進而得到n≤60

即不存在60位以上的水仙花數

(當然,證明過程需要用到對數和函數性質,比較容易得到最後的結論,在此筆者不再加以贅述,有興趣的讀者可以自行證明)。

 

後來施瓦茨和納爾遜又先後改進了伯納德的結果,將上界進一步降低為n≤58。

 

當然,即使我們得到了n≤58的結論,想要一一求出所有的水仙花數仍然是一件很麻煩的事情,以前,找尋水仙花數的紀錄一直由美國數學家納爾遜所保持,他找到了一個10位的水仙花數:4679307774,由於在求解思路上的限制,對水仙花數的探索陷入了一個巨大的瓶頸。

 

然而,在21世紀,中國國防科技大學的劉江寧先生提出了一種新的思路:

一、,我們往往習慣從左邊入手處理問題,而實際上,從右邊入手處理問題會更加的簡單。

二、轉化問題,設中有個k0個0、k1個1、k2個2、……、k9個9,那麼顯然,k0+k1+k2+……+k9個9,顯然在k0個0、k1個1、k2個2、……、k9個9所組成的所有n位數中,至多只有一個水仙花數,所以,我們通過對新的不等方程自然數解的尋找來減少在尋找水仙花數中的枚舉次數。

三、當n充分大時,a1、a2、……、an中會出現很多個9,對此,劉先生提出了最大值次數限定策略,例如,當n=60,他證明了9至少出現了56次,這樣就能大大減少較大時的可能情況,從而減少計算量。

根據上述思路,劉先生編制了相應的電腦程式,徹底解決了水仙花數的尋求問題,十進位中,水仙花數一共有88個,最大的是兩個39位數。

 

然而,雖然劉先生解決了水仙花數的問題,但是我們仍然沒有停下探索的腳步,我們發現,有一些數具有一些類似於水仙花數的性質,例如:

89=81+92

135=11+22+33

1676=11+62+73+64

or

數學無止境

我們永遠不會停下探索的腳步

 

版權聲明:本文為52數學網獨家原創,版權歸原作者所有。

相關焦點

  • 【青少年編程】【藍橋杯】水仙花數
    水仙花數1.n,判斷是否為水仙花數,如果是則輸出「是水仙花數!」定義一個函數 是否為水仙花數(數字),通過該函數可以判斷傳入的數字是否為水仙花數。一個數對10取餘可以獲得該數字個位上的數字。第一部分,輸入一個數字調用函數判斷是否為水仙花數,如果是則輸出「是水仙花數!」,不是則輸出「不是水仙花數!」;第二部分,計算出1000以內的水仙花數,由於題目所給圖示的結果為三位數,所以從100開始至999,把是水仙花數的數值存入列表。最後輸出列表即可。3.
  • java程序之水仙花數
    在我們編程裡面的循環這一方面,肯定少不了「水仙花數」這樣的一個程序,在學校裡面老師應該會讓你做一個「水仙花數」這樣的程序。小編當時就被一個這樣的程序搞得滿頭霧水。根本沒有思路呀!等學完之後才明白原來是這個樣呀,茅塞頓開。
  • 求1000以內的水仙花數
    看知乎上有朋友說還不明白怎麼判斷水仙花數,今天我們就來看看這個問題。(PS:「求1000以內的水仙花數」這道題阿湯哥記憶猶新。到現在還記得這是我大一上學期期末考試的編程題。)首先給出水仙花數定義。水仙花數(Narcissistic number)也被稱為超完全數字不變數(pluperfect digital invariant, PPDI)、自戀數、自冪數、阿姆斯壯數或阿姆斯特朗數(Armstrong number),水仙花數是指一個 3 位數,它的每個位上的數字的 3次冪之和等於它本身(例如:1^3 + 5^3+ 3^
  • Python編程之水仙花數
    本節內容主要對Python中if和for循環應用進行簡要的學習水仙花數
  • C語言 | 輸出水仙花數
    例54:C語言編程輸出100-1000之間所有的「水仙花數」,所謂的「水仙花數」是指一個3位數,其各位數字立方和等於該數本身。解析:153是一個水仙花數,因為153=1^3+5^3+3^3,逐個位數判斷即可,寫代碼的時候要考慮到每一位。
  • C語言求水仙花數代碼解析
    水仙花數「水仙花數」又稱為「阿姆斯特朗數」。
  • Python基礎操作題-求水仙花數
    Python基礎操作題-數列求和    請求出1000以內的水仙花數並輸出:水仙花數(Narcissistic number)也被稱為超完全數字不變數
  • C語言編寫程序求水仙花數
    C語言編寫程序求水仙花數水仙花數是一個數學問題,其實質是一個三位數,個位數的立方加十位數的立方加百位數的立方之和等於這個三位數本身。例如153=1*1*1+5*5*5+3*3*3,即153=1+125+27。
  • 水仙花數的簡單思維和Python設計方法
    1.概念理解:要設計程序輸出「水仙花數」,就需要知道「水仙花數」的概念。我們把一個三位數其各位數字的立方和等於該數本身的數字稱為「水仙花數」。例如,153是「水仙花數」,因為153=1*1*1+5*5*5+3*3*3。
  • Scratch之思維訓練一:水仙花數的計算
    水仙花數是一種神奇而自戀的數字。 當了解了三次方的概念之後,家長和小朋友們可以試試看,手動的尋找水仙花數是一件多麼難的事情。例如一個三位數123,1^3=1, 2^3=8,3^3=27,加起來的和等於36,所以並不是水仙花數。那麼我們來體驗一下編程的魅力吧,因為笨笨的窮舉法正是計算機所擅長的事情之一。
  • C++刷題基礎篇:找水仙花數
    題目描述求出100至999範圍內的所有水仙花數。所謂水仙花數,就是指各位數字立方之和等於該數的數;a^3稱為a的立方,即等於a×a×a的值。例如:因為153=1^3+5^3+3^3,所以153是一個水仙花數。
  • Scratch3.0編程小課堂41(數學:判斷水仙花數)
    今天我們用scratch來判斷水仙花數。判斷水仙花數判斷水仙花數題目:輸入一個三位數,判斷它是否為水仙花數;角色:小貓;知識點:水仙花數,變量,偵測,運算,選擇;水仙花數(Narcissistic number)也被稱為超完全數字不變數(pluperfect digital invariant, PPDI)、自戀數
  • Python基礎知識:善用列表推導式,優雅求解水仙花數
    什麼是水仙花數水仙花數也被稱為超完全數字不變數、自戀數、自冪數、阿姆斯壯數或阿姆斯特朗數,嚴格的定義水仙花數,是指一個 3 位數,它的每個位上的數字的 3次冪之和等於它本身。如371 = 3^3 + 7^3+ 1^3,則371是一個水仙花數。Python中的求解思路根據水仙花數的定義,可以理出下面的編程思路:1. 新建一個空列表x,用以存儲所有的水仙花數2.
  • VB編程如何求解水仙花數算法問題?
    今天,我們共同來看一下如何用VB編程來求解水仙花數的問題。水仙花數也被稱為超完全數字不變數(自戀數、自冪數、阿姆斯壯數或阿姆斯特朗數)。水仙花數是指一個 3 位數,它的每個位上的數字的 3次冪之和等於它本身(例如:1^3 + 5^3+ 3^3 = 153)。有了上面的概念,我們就可以利用VB編程中的控制結構編寫代碼實現求解過程了。
  • 學會這招,輕鬆列印出100-1000的所有水仙花數
    需求:列印出100-1000的所有水仙花數程序分析:所謂」水仙花數」是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個」水仙花數」,因為153=1的三次方+5的三次方+3的三次方。
  • 「每日一練」巧用python列印出所有的「水仙花數」
    "水仙花數"估計很多小夥伴看到都會懵吧,這個概念比較小眾,但其實本文主要講述的是python如何從眾多數裡邊篩選出符合條件的數!下邊我們就一起來看看python是怎麼輸出的?題目列印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方。
  • 列印「水仙花數」,只有一種方法?Python帶你用多種方式實現輸出
    今天,我們來和大家探討一個入門級的話題:使用Python列印輸出"水仙花數"水仙花>所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。我們遍歷三位數中的每一位數字,當數字組合成三位數時符合水仙花數的條件時,將該數字列印輸出。