Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Kiểm tra tổng ước số của hai số có bằng nhau trong Python

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