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

Kiểm tra số Ore (số có trung bình điều hòa nguyên) trong Python

Một số được gọi là số Ore nếu trung bình điều hòa (harmonic mean) của các ước số của nó là một số nguyên.

Ví dụ: 28 có ước số [1,2,4,7,14,28]. Trung bình điều hòa = 6 / (1/1+1/2+1/4+1/7+1/14+1/28) = 3 → nguyên → 28 là số Ore.

Giải thuật

  • Tìm tất cả ước số của n.
  • Tính trung bình điều hòa: H = số_ước / tổng( n / ước ).
  • Nếu H là số nguyên → True.

Mã ví dụ

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

def get_harmonic_mean(n):
    div = get_all_div(n)
    total = 0
    length = len(div)
    for i in range(length):
        total += n / div[i]
    total /= n
    return length / total

def solve(n):
    mean = get_harmonic_mean(n)
    if mean - int(mean) == 0:
        return True
    return False

n = 28
print(solve(n))

Đầu vào

28

Đầu ra

True