ปัญหา
ให้จำนวน p และ q ตรวจสอบว่าผลรวมตัวหาร (รวม 1 แต่ไม่รวมตัวมันเอง) เท่ากันหรือไม่
ตัวอย่าง
p = 559 (ตัวหาร: 1, 13, 43 → sum=57), q = 703 (ตัวหาร: 1, 19, 37 → sum=57) → True
แนวคิดการแก้ปัญหา
- เขียนฟังก์ชน์
divSum(n)หาผลรวมตัวหาร - วน i จาก 2 ถึง sqrt(n) หาตัวหารคู่
- เปรียบเทียบ divSum(p) กับ divSum(q)
โค้ดตัวอย่าง
from math import isqrt
def div_sum(n):
total = 1
for i in range(2, isqrt(n) + 1):
if n % i == 0:
total += i
if i != n // i:
total += n // i
return total
def solve(p, q):
return div_sum(p) == div_sum(q)
print(solve(559, 703)) # True
อินพุต / เอาต์พุต
Input: 559, 703 Output: True