153=1*1*1+5*5*5+3*3*3,你能找出所有滿足此規律的三位數嗎?

小添非常喜歡學習數學,有一天中午,小添正在自習的時候,發現了一個神奇的數字:153 = 1*1*1 + 5*5*5 + 3*3*3。於是乎,她就把這個數字的有趣規律告訴了數學老師。老師笑了笑,“小添同學,你能想辦法找到所有符合這個規律的三位數嗎?”。

小添聽說你會電腦編程,於是找到了你,想讓你來幫她解決。

153=1*1*1+5*5*5+3*3*3,你能找出所有滿足此規律的三位數嗎?

數字遊戲

問題描述

153是一個特殊的數,它等於其每位數字的立方和,即153 = 1*1*1 + 5*5*5 + 3*3*3。請你用編程語言求出所有滿足這個條件的三位十進制數。

<code>輸出格式:
從小到大依次輸出滿足條件的三位十進制數,每個數字佔一行。/<code>

問題分析

仔細審題 153 = 1*1*1 + 5*5*5 + 3*3*3,我們可以看出這類數字符合如下規律:

<code>數字本身 = 個位數的三次方 + 十位數的三次方 + 百位數的三次方/<code>

題目中要求我們找到滿足這個規律的3位十進制數,我們知道三位十進制數就是100~999之間的數字,那麼我們就可以對100~999之間的數字,依次對每位數字計算出其個位數、十位數、百位數,然後再判斷是否滿足如上規律,如果符合就輸出這個數字,否則就繼續判斷下一位數字。

程序編寫

① 確定尋找的數字範圍是100~999之間:

注意:在Python中,循環從0開始,不包含1000

<code>for x in range(100,1000):/<code>

② 計算出這個數的個位數:

注意:這個數求餘10的值就是它的個位數

<code>g = x % 10 #個位數/<code>

③ 計算出這個數的十位數:

注意:Python中計算十位數首先我們要把這個數除以10的數的小數點後的數字去掉,使其變為整數,然後再對其求餘10即可

<code>s = int(x / 10) % 10 #十位數/<code>

④ 計算這個數的百位數:

注意:我們已知這個數為三位數,所以他的百位數就是這個數除以100的數去掉小數點之後的部分,使其變為整數

<code>b = int(x / 100) #百位數/<code>

⑤ 判斷是否滿足規律:

注意:數字本身 = 個位數的三次方 + 十位數的三次方 + 百位數的三次方,如果滿足此規律就打印出這個字,否則繼續循環判斷下一個數

<code>if x == (g*g*g + s*s*s + b*b*b):
    print(x)/<code>

完整代碼

為了便於你一氣呵成的閱讀與思考,如下列出完整的代碼:

<code>for x in range(100,1000):
    g = x % 10 #個位數
    s = int(x / 10) % 10 #十位數
    b = int(x / 100) #百位數
    if x == (g*g*g + s*s*s + b*b*b):
        print(x)/<code>

好了,今天的分享就到這裡,大家是不是感覺這個問題很簡單呢?是不是經過我們分析後就迎刃而解了呢?如果你也想通過編程的方式來解決生活或學習中遇到的各種各樣的問題,那麼歡迎關注頭條號@科技時代聊編程。

謝謝各位朋友的關注,我們會持續更新更多好玩又有趣的編程學習知識,同時也歡迎您在評論區中留言,和我們共同探討和學習編程吧!


分享到:


相關文章: