Cho hai số p và q. Kiểm tra xem tổng các ước số (không kể chính số đó) của hai số có bằng nhau hay không.
Ví dụ: p=559, q=703 → ước của 559: 1,13,43 (tổng 57); ước của 703: 1,19,37 (tổng 57) → True.
Giải thuật
- Hàm
divSum(n)tính tổng ước số (kể cả 1, không kể n) bằng cách duyệt đến căn bậc hai. - So sánh
divSum(p)vàdivSum(q).
Mã ví dụ
from math import floor
def divSum(n):
total = 1
i = 2
while i * i <= n:
if n % i == 0:
total += i + floor(n / i)
i += 1
return total
def solve(p, q):
return divSum(p) == divSum(q)
p = 559
q = 703
print(solve(p, q))
Đầu vào
559, 703
Đầu ra
True