2016年8月23日 星期二

python 程式設計50題測試範例-12

12、完全數
      一個數等於它所有的因數和,這種數我們叫它完全數﹝不包括它本身﹞
            6=1+2+3
             28=1+2+4+7+14
      請求出第三、第四以及第五個完全數

輸出範例一
6,28,8128,33550336

首十個完全數是(A000396):
1.  61位)
2.  282位)
3.  4963位)
4.  81284位)
5.  335503368位)
6.  858986905610位)
7.  13743869132812位)
8.  230584300813995212819位)
9.  265845599156983174465469261595384217637位)

10.19156194260823610729479337808430363813099732154816921654位)

程式:

#coding:UTF-8

#請撰寫程式輸出10000以內的完全數。其中,完全數代表一正整數,除其自身以外之所有因數的和恰好為該數。
#例如,6為第一個完全數,6除自身以外的因數有1、2、3,則6 = 1 + 2 + 3。
print("請撰寫程式輸出10000以內的完全數。其中,完全數代表一正整數,除其自身以外之所有因數的和恰好為該數。")
print("例如,6為第一個完全數,6除自身以外的因數有1、2、3,則6 = 1 + 2 + 3。")
print("======================")
print("   1.  6(1位)")
print("   2.  28(2位)")
print("   3.  496(3位)")
print("   4.  8128(4位)")
print("   5.  33550336(8位)")
print("   6.  8589869056(10位)")
print(" Python  在32位機上的最小值和最大值")       
print("數據類型   最小值 最大值")
print("signed int -2147483647 2147483647")
         
a=10000

for i in range(2, a ):          # 檢驗2~間的所有數
        facSum = 1          # 變數「不包含自身的因數和」,因必有因數1所以預設為1
        for j in range(2, int(i**0.5)+1):          # 檢驗因數
                if (i % j == 0):
                        if(i / j == j): # 若i為平方數,則找到j 1個因數
                                facSum += j
                        else:         # 若i不為平方數,則找到j 及 i/j 2個因數
                                 facSum += j + int(i/j)
        if (facSum == i):
                 print(str(i), end=' ')
                 
print("為完全數")


結果:
================= RESTART: D:/程式語言 Python 入門/50題/Ex50-12.py =================
請撰寫程式輸出10000以內的完全數。其中,完全數代表一正整數,除其自身以外之所有因數的和恰好為該數。
例如,6為第一個完全數,6除自身以外的因數有1、2、3,則6 = 1 + 2 + 3。
======================
   1.  6(1位)
   2.  28(2位)
   3.  496(3位)
   4.  8128(4位)
   5.  33550336(8位)
   6.  8589869056(10位)
 Python  在32位機上的最小值和最大值
數據類型   最小值 最大值
signed int -2147483647 2147483647
6 28 496 8128 為完全數
>>> 

沒有留言:

張貼留言

Messaging API作為替代方案

  LINE超好用功能要沒了!LINE Notify明年3月底終止服務,有什麼替代方案? LINE Notify將於2025年3月31日結束服務,官方建議改用Messaging API作為替代方案。 //CHANNEL_ACCESS_TOKEN = 'Messaging ...