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

ตรวจสอบว่าเป็นจำนวนออเร (Ore Number) หรือไม่ ใน Python


ปัญหา

จำนวนออเร (Ore Number) คือ จำนวนที่ค่าเฉลี่ยฮาร์โมนิกของตัวหารทั้งหมดเป็นจำนวนเต็ม

ตัวอย่าง

n = 28 → ตัวหาร: 1,2,4,7,14,28 (6 ตัว)
ฮาร์โมนิก = 6 / (1/1+1/2+1/4+1/7+1/14+1/28) = 6 / (2) = 3 → เป็นจำนวนเต็ม → True

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

  1. หาตัวหารทั้งหมดของ n
  2. คำนวณค่าเฉลี่ยฮาร์โมนิก: H = count / sum(n/d)
  3. ตรวจสอบว่า H เป็นจำนวนเต็ม

โค้ดตัวอย่าง

def get_divisors(n):
    divs = []
    for i in range(1, int(n**0.5)+1):
        if n % i == 0:
            divs.append(i)
            if i != n // i:
                divs.append(n // i)
    return divs

def harmonic_mean(n):
    divs = get_divisors(n)
    total = sum(n / d for d in divs)
    return len(divs) / (total / n)

def solve(n):
    mean = harmonic_mean(n)
    return mean == int(mean)

print(solve(28))  # True

อินพุต / เอาต์พุต

Input:  28
Output: True