プログラミングは1000以内のすべての完数を求めます——python
691 ワード
完数:1つの数がちょうどその因子の和に等しい場合、この数は完数であり、例えば6=1+2+3である.
全体的な考え方.まず任意の数のすべての因子を探し出す【因子はすべてこの数を除去することができる数で、自身を含まない】 すべての因子を加算し、この数 に等しいかどうかを確認します.出力結果 まとめ:プログラムが書いたlowは少し、後で時間を割いて改善して、本当に処理する時間がありません!また、結果が正しいかどうかも厳しくチェックしていないので、自分で工夫して修正しましょう.
全体的な考え方.
def wan_num(n):
for i in range(1, n):
if n % i == 0:
yield i
n = 1000
result = {}
for i in range(1, 1000):
L = wan_num(i)
L1 = list(L)
if i == sum(L1):
print("this is OK")
result[i] = L1
print(result)
{496: [1, 2, 4, 8, 16, 31, 62, 124, 248], 28: [1, 2, 4, 7, 14], 6: [1, 2, 3]}