Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่าผลรวมตัวหารของสองจำนวนเท่ากันหรือไม่ ใน Python


ปัญหา

ให้จำนวน p และ q ตรวจสอบว่าผลรวมตัวหาร (รวม 1 แต่ไม่รวมตัวมันเอง) เท่ากันหรือไม่

ตัวอย่าง

p = 559 (ตัวหาร: 1, 13, 43 → sum=57), q = 703 (ตัวหาร: 1, 19, 37 → sum=57) → True

แนวคิดการแก้ปัญหา

  1. เขียนฟังก์ชน์ divSum(n) หาผลรวมตัวหาร
  2. วน i จาก 2 ถึง sqrt(n) หาตัวหารคู่
  3. เปรียบเทียบ 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