Pythonの練習 - 完成の数を見つけるために

Pythonの練習 - 完成の数を見つけるために

着信番号の番号の後に自身以外の要素の和に正確に等しいです。例えば:6 = 1 + 2 + 3、ここで、1、2、6倍。この問題は、任意の2つの完全な正の整数であり、n Mとのすべての番号を見つけるためにプログラミングする必要があります。

入力フォーマット:

2つの正の整数で指定された入力は、スペースで区切られ、行のm及びn(1 <m≤n≤10000)。

出力フォーマット:

分解は、行当たりそれぞれカウントして、所定の範囲の数を完了するために線で各出力ラインのための多くの要因と要因を完了「を終了する因子の数=係数1 + 2 + ... + Kファクタ」のフォーマットはの形で蓄積されます昇順に与えられました。あなたは、出力「なし」の範囲内でそれらをカウントしていない場合。

サンプル入力:

2 30

出力例:

6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14

分析:

この問題は、そうSQRTに(I)することができ、制限時間に注意を払う必要があります。

from math import sqrt
n,m = map(int,input().split())
flag = 0
for i in range(n,m+1):
    l = []
    l.append(1)
    for j in range(2,int(sqrt(i))+1):
        if i%j==0:
            l.append(j)
            if j*j!=i:
                l.append(i//j)
    if sum(l) == i:
        print("%d = " %i,end='')
        l.sort()
        print(' + '.join('%s' %id for id in l))
        flag = 1
if flag == 0:
    print("None")
公開された176元の記事 ウォン称賛7 ビュー9177

おすすめ

転載: blog.csdn.net/linjiayina/article/details/104404914