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.