Python程式查詢數字的最佳約數


假設我們有一個數字n。我們必須根據以下條件找到n的最佳約數:我們有兩個數字p和q,其中數字和較大的一個稱為比另一個更好的。當數字和相同時,較小的數字更好。

因此,如果輸入類似於n = 180,則輸出將為9,因為約數為[1, 2, 3, 4, 5, 6, 9, 10, 12, 15, 18, 20, 30, 36, 45, 60, 90, 180]。因此,數字和最大的數字為[9, 18, 36, 45, 90, 180],但其中9是更好的數字,因為它的值較小。

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

  • div := 1, md := 1
  • 對於i從2到n,執行以下操作
    • k := i
    • 如果n mod i > 0,則
      • 轉到下一個迭代
    • s := 0
    • 當k > 0時,執行以下操作
      • s := s + k mod 10
      • k := k / 10
    • 如果s > md,則
      • md := s
      • div := i
  • 返回div

示例

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

def solve(n):
   div = 1
   md = 1
   for i in range(2, n + 1):
      k = i
      if n % i > 0:
         continue
      s = 0
      while k > 0:
         s += k % 10
         k /= 10
      if s > md:
         md = s
         div = i

   return div

n = 180
print(solve(n))

輸入

180

輸出

9

更新於: 2021年10月12日

353 次檢視

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.