代码之家  ›  专栏  ›  技术社区  ›  Daenyth

理解因式分解函数

  •  4
  • Daenyth  · 技术社区  · 14 年前

    A solution for problem #12

    它的(python)代码是 num_factors = lambda x: mul((exp+1) for (base, exp) in factorize(x)) mul() reduce(operator.mul, ...) .)

    factorize 我很难理解它是如何工作的。它如何告诉你这个数的因子数?

    2 回复  |  直到 10 年前
        1
  •  12
  •   Khaled Alshaya    14 年前

    基本思想是,如果你把一个数分解成以下形式,这实际上是标准形式:

    let p be a prime and e be the exponent of the prime:
    
    N = p1^e1 * p2^e2 *....* pk^ek
    

    现在,要知道N有多少个因子,我们必须考虑素因子的每一个组合。所以你可以说除数的数目是:

    e1 * e2 * e3 *...* ek
    

    但是你必须注意,如果一个素数因子的标准形式的指数为零,那么结果也将是一个除数。这意味着,我们必须给每个指数加一,以确保我们包含了第i个p的0次方。下面是一个使用数字12的例子——与问题编号相同:D

    Let N = 12
    Then, the prime factors are:
    2^2 * 3^1
    The divisors are the multiplicative combinations of these factors. Then, we have:
    2^0 * 3^0 = 1
    2^1 * 3^0 = 2
    2^2 * 3^0 = 4
    2^0 * 3^1 = 3
    2^1 * 3^1 = 6
    2^2 * 3^1 = 12
    

        2
  •  2
  •   Landei    14 年前

    这个公式很简单:你给每个素数除数的指数加一,然后相乘。

    示例:

    12=2^2*3^1->指数是2和1,加1是3和2,3*2=6个因子(1,2,3,4,6,12)

    40=2^3*5^1->指数是3和1,加1是4和2,4*2=8个因子(1,2,4,5,8,10,20,40)