[python]約数と加算


月コードは第2四半期>約数の個数と加算に挑戦します
[問題の説明]
パラメータは2つの整数leftとrightです.左から右までのすべての数でsolution関数を完了し、約数の個数に偶数因数を加え、約数の個数に奇数因数を加えて減算数を返します.
[制限条件]
  • 1 ≤ left ≤ right ≤ 1,000
  • [I/O例]

    [IO例説明]
    I/O例#1
  • 次の表は、13から17までのすべての数字の合計数を示しています.
  • したがって、13+14+15-16+17=43を返さなければなりません.I/O例#2
  • 次の表は、24から27までのすべての数字の合計数を示しています.
  • したがって、24-25+26+27=52を返さなければなりません.私の答え
    考えてみろ!
    def solution(left, right):
        answer = 0 # +약수가 짝수인 수,-약수가 홀수인 수
        for i in list(range(left,right+1)):
            cnt = 0 # 약수의 개수를 받을 변수
            for j in list(range(1,i+1)):
                if i%j == 0:
                    cnt += 1
            if cnt%2 == 0:
                answer += i
            else:
                answer -= i
        return answer
  • %(結果の残りを除いて戻る)で薬水であることを確認し、cntに薬水の個数を加えた.
  • cntが偶数なら答えにつけて奇数なら外すifゲートを作りました.

  • 2階建ての扉ですが通過しました.😓
    もっと簡単なコードは他の人のコードを参照しましょう.

    他の人の解答#1
    def solution(left, right): 
        answer = 0
        for i in range(left,right+1):
            if int(i**0.5)==i**0.5: 
                answer -= i
            else:
                answer += i
        return answer
    参考にしてください!
  • 平方数の約数は奇数個を利用した解法である.