在 Python 中檢查給定數字是否為 Ore 數


假設我們有一個數字 n。我們需要檢查 n 是否為 Ore 數。眾所周知,Ore 數是一個其約數具有整數調和值的數字。

因此,如果輸入類似於 28,則輸出將為 True,因為 28 有六個約數:[1, 2, 4, 7, 14, 28],所以

由於 3 是整數,所以 28 是 Ore 數。

為了解決這個問題,我們將遵循以下步驟 -

  • 定義一個函式 get_all_div()。這將接受 n
  • div := 一個新的列表
  • 對於 i 從 1 到 n 的平方根的整數部分,執行以下操作
    • 如果 n 可以被 i 整除,則
      • 如果 (n / i) 的商為 i,則
        • 將 i 插入到 div 的末尾
      • 否則,
        • 將 i 插入到 div 的末尾
        • 將 (n / i) 的商插入到 div 的末尾
  • 返回 div
  • 定義一個函式 get_harmonic_mean()。這將接受 n
  • div := get_all_div(n)
  • total := 0
  • length := div 的大小
  • 對於 i 從 0 到 length - 1,執行以下操作
    • total := total + (n / div[i])
  • total := total / n
  • 返回 length / total
  • 從主方法執行以下操作
  • mean := get_harmonic_mean(n)
  • 如果 mean 是整數,則
    • 返回 True
  • 返回 False

讓我們看看以下實現以更好地理解 -

示例程式碼

線上演示

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(0, 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))

輸入

28

輸出

True

更新於: 2021年1月15日

247 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.