昨天終於把比大小遊戲告一個段落了。
然後,昨天沒有發完文,真的是很良心不安啊...
身體欠安,今天終於補完了。
總之,我覺得我應該不要要求太高,不要一下子想弄懂很多東西,這樣會逼死自己。
不過這個問題似乎無解(?
總之,我會在思考看看怎麼解決。
今天主題比較簡單只想要研究「水仙花數」
這是在 Python-100-Days 裡面看到的,但是教程裡就是一道練習題,什麼也沒說。當時瞄了一眼想說之後再來研究看看,今天應該是個好日子 哈
但是,我還是得候補,因為這就像小學生一樣,功課只要一沒寫,就永遠補不完了)QQ
水仙花數(Narcissistic number),又稱超完全數字不變數(pluperfect digital invariant, PPDI)、自戀數、自冪數、阿姆斯壯數或阿姆斯特朗數(Armstrong number)...看到這裡我滿腦子都是......
好了,離題了。
其實前幾天看了一眼還真是沒有看懂「水仙花數」到底是什麼東西。
今天讀了才發現這真的蠻厲害的,這確實是由「阿姆斯壯」所提出的想法,雖然在當時他並沒有將這個研究公諸於世,只有停留在討論階段而已。
我研究後的理解是,「水仙花數」是一個非常自戀的數字,因此才會用希臘神話 Narcissus 這段故事來幫這個數字命名。
簡單來說,「水仙花數」基本上就是三位數字而已。
153 → 是「三」位數字,因此把153拆開來,變成數字1、5、3。
分別把這三個數字變成立方(乘3次)後再相加,就會變成1+125+27,這個算式的結果就等於原本的數字。
總之,這就是「水仙花數」每位數字都很自戀,因為數值都不同,但是相加起來又還是原來的數字。
到底是誰想出來的啦,也太天才了吧...
只是,這好像也沒有什麼實際運用價值(?
總之,今天來試試看要怎麼找出1到1000之中,所有「水仙花數」呢?
for num in range(1, 1000):
Hundreds digits = num // 100
Ten digits = num // 10 % 10
Digits = num % 10
if num == Hundreds digit ** 3 + Ten digits ** 3 + Digits ** 3:
print(num)
好的,我實在不能理解,習題裡面的公式是
"""
找出100~999之间的所有水仙花数
水仙花数是各位立方和等于这个数本身的数
如: 153 = 13 + 53 + 3**3
Version: 0.1
Author: 骆昊
Date: 2018-03-02
"""
for num in range(100, 1000):
low = num % 10
mid = num // 10 % 10
high = num // 100
if num == low ** 3 + mid ** 3 + high ** 3:
print(num)
我自己是把它改成1-1000內的水仙花數
但是,我把low,mid,high 換成 原本的英文 Hundreds digits、Ten digits、Digits 它就不理我了。
這也是我一直以來的疑問,到底有哪些東西是有特定的關鍵字可以直接寫啊?
這個明天再來研究,我今天要先讓程式可以跑才行!!
我把程式整理好,變成下面的樣子:
for num in range(1, 1000):
high = num // 100
mid = num // 10 % 10
low = num % 10
if num == high ** 3 + mid ** 3 + low ** 3:
print(num)
成功跑出了計算!!!)為最近低迷的士氣小歡呼一下!!!
但是問題來了,我去看了看維基百科十進制水仙花束0-9都有算在內耶!
所以,我前面說的定義「三位數字」是比較嚴苛的檢驗法,撇除「三位數」這個公式還是錯啊,因為照理來說0-9都要顯現出來才對...
肯定是一開始觀念錯,才會步步錯。
最剛開始是覺得「水仙花數」感覺很浪漫,沒想到也是很難搞啊...
正常發揮中!!!
收工。