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

วิธีตรวจสอบว่าเลขสองตัว (m,n) เป็น Amicable Numbers หรือไม่ด้วย Python

Amicable numbers คือเลขสองตัวที่ต่างกัน ผลรวม proper divisors ของแต่ละตัวเท่ากับอีกตัว (Proper divisor คือตัวหารบวกของตัวเลข ยกเว้นตัวมันเอง เช่น proper divisors ของ 6 คือ 1, 2, 3)

ใน Python หาได้โดยหาผลรวมแต่ละตัวและเปรียบเทียบกับอีกตัว

def are_amicable(x, y):
    if x == y:
        return False
    # หาผลรวม proper divisors
    sum_x = sum(e for e in range(1, x//2+1) if x % e == 0)
    sum_y = sum(e for e in range(1, y//2+1) if y % e == 0)
    # คืน True ถ้าเงื่อนไขตรง
    return sum_x == y and sum_y == x

print(are_amicable(15, 20))
print(are_amicable(220, 284))

ผลลัพธ์

False
True