12、完全數
一個數等於它所有的因數和,這種數我們叫它完全數﹝不包括它本身﹞
像 6=1+2+3
28=1+2+4+7+14
請求出第三、第四以及第五個完全數
輸出範例一
|
6,28,8128,33550336
|
1.
6(1位)
2.
28(2位)
3.
496(3位)
4.
8128(4位)
5.
33550336(8位)
6.
8589869056(10位)
7.
137438691328(12位)
8.
2305843008139952128(19位)
9.
2658455991569831744654692615953842176(37位)
10.191561942608236107294793378084303638130997321548169216(54位)
程式:
#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 為完全數
>>>
沒有留言:
張貼留言