📜  Q查询的数字的适当除数的乘积(1)

📅  最后修改于: 2023-12-03 15:04:44.951000             🧑  作者: Mango

查询数字的适当除数的乘积

在程序开发中,有时需要查询数字的所有适当除数的乘积。适当除数指一个数除以另一个数的结果是一个整数,且这个除数不能等于1或自身。本文介绍一个简单的算法来实现这个功能。

算法思路

我们可以使用一个循环,从2开始遍历到该数字的平方根,依次判断该数字是否被当前循环变量整除。若整除,则将该除数及其商全部加入一个集合factors中。最后,我们计算集合中除了1和自身之外的所有元素的积,该积即为所求的适当除数的乘积。

下面给出具体的代码实现:

def proper_divisors_product(n):
    factors = {1, n}
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            factors.add(i)
            factors.add(n // i)
    return math.prod(factor for factor in factors if factor != 1 and factor != n)
测试样例

下面给出一些测试样例:

| 输入 | 输出 | | ----- | ------ | | 10 | 10 | | 24 | 48 | | 100 | 200 | | 12345 | 168420 |

总结

本文介绍了一个简单的算法来查询数字的适当除数的乘积。该算法的时间复杂度为$O(\sqrt{n})$,空间复杂度为$O(\sqrt{n})$。在实际应用中,如需要反复查询多个数字的适当除数的乘积,可以将已经查询过的结果缓存起来,避免重复计算。