プログラミングは1000以内のすべての完数を求めます——python

691 ワード

完数:1つの数がちょうどその因子の和に等しい場合、この数は完数であり、例えば6=1+2+3である.
全体的な考え方.
  • まず任意の数のすべての因子を探し出す【因子はすべてこの数を除去することができる数で、自身を含まない】
  • 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]}
    
  • まとめ:プログラムが書いたlowは少し、後で時間を割いて改善して、本当に処理する時間がありません!また、結果が正しいかどうかも厳しくチェックしていないので、自分で工夫して修正しましょう.