LoginSignup
2
0

More than 3 years have passed since last update.

約数の総和を求める

Last updated at Posted at 2019-12-22

はじめに

よくある話題ですが、
加算していく様子が少し面白かったので記事にしてみました。

コード

solve.py
import math 

def divSum(num) : 
    result = 0
    i = 2
    while i*i <= num: 
        if (num % i == 0): 
            if (i == (num // i)): 
                result += i 
            else : 
                result += i + num//i
        i += 1
    return int(1 + result + num) 

num = 12
print (divSum(num)) 

num = 9
print(divSum(num))

# 28
# 13

説明

num = 12のとき、12の約数は1, 2, 3, 4, 6, 12です。
(2, 6), (3, 4)といった具合で(i, num/i)のペアを作って一度に加算しています。
最後のreturnは問題の条件によって

example.py
return int(1 + result)

のように調整できます。

num = 9のとき、9の約数は1, 3, 9ですが、
先ほどの様にペアを作ってしまうと、(3, 3)となって
3を2回カウントするので、片方だけ加算する必要があります。

補足

コメント欄で@konandoiruasaさんに
高速なプログラムを教えていただきました。
ありがとうございます🙇‍♂️

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0