[プログラマー]約数の個数と加算


質問する


パラメータは2つの整数leftとrightです.左から右までのすべての数でsolution関数を完了し、約数の個数に偶数因数を加え、約数の個数に奇数因数を加えて減算数を返します.

せいげんじょうけん


1 ≤ left ≤ right ≤ 1,000

にゅうしゅつりょく



入出力例


次の表に、13から17までのすべての数値の合計を示します.

したがって、13+14+15-16+17=43を返さなければなりません.
def solution(left, right):
    answer = 0

    for i in range(left, right + 1): # left ~ right까지를 반복한다.
        tes = 0
        for a in range(1, i + 1): # 약수의 개수를 구하는 반복문
            if i % a == 0:
                tes += 1

        if tes % 2 == 0:
            answer += i
        else:
            answer -= i

    return answer


print(solution(13, 17)) # 43
print(solution(24, 27)) # 52

に答える


このコードは複文と条件文を組み合わせ,最初の複文は13~17まで繰り返し,次の複文は約数を求める.
その後、求めた約数の個数により、条件文を用いてtesの値を偶数に加算した場合、さらに奇数を減算してresponseの値を求める.

難点


対応するコードを書くためには、2つのことを知る必要があります.
薬水の個数と薬水の個数を求めることで答えの値を求める.
約数を求めるコードを書くのに長い時間がかかり,最終的な答え値を求める式が確立された.
tes=0の位置と2番目(答えを求める値)の条件文の位置設定部分に多くのエラーが発生し、for文とif文を適切な領域に設定するためにさらに復習する必要があります.