使用 Python 检查两个数字的约数和是否相同


假设我们有两个数字 p 和 q。我们需要检查这两个数字的所有约数的和是否相同。

因此,如果输入像 p = 559,q = 703,则输出将为 True,因为 559 的约数是 1、13、43,而 703 的约数是 1、19、37。约数的和都是 57。

为了解决这个问题,我们将遵循以下步骤:

  • 定义一个函数 divSum()。它将接收 n 作为输入。
  • total := 1
  • i := 2
  • 当 i * i <= n 时,执行以下操作:
    • 如果 n 可以被 i 整除,则:
      • total := total + i + n / i 的向下取整
    • i := i + 1
  • 返回 total
  • 在主方法中,当 divSum(p) 等于 divSum(q) 时返回 true,否则返回 false。

让我们看下面的实现来更好地理解:

示例代码

在线演示

from math import floor
 
def divSum(n):
   total = 1
   i = 2
   while i * i <= n:
      if n % i == 0:
         total += i + floor(n / i)
      i += 1
 
   return total
   
def solve(p, q):
   return divSum(p) == divSum(q)

p = 559
q = 703
print(solve(p, q))

输入

559, 703

输出

True

更新于: 2021年1月15日

254 次查看

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告