Python 程序用于查找数字的更好除数

pythonserver side programmingprogramming

假设我们有一个数字 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
  • 对于 2 到 n 范围内的 i,执行
    • k := i
    • 如果 n mod i > 0,则
      • 进行下一次迭代
    • s := 0
    • 当 k > 0,执行
      • s := s + k mod 10
      • k := k / 10
    • 如果 s > md,则
      • md := s
      • div := i
  • return 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

相关文章