数字因子分解

给一个 n > 1的正数,找到n的因子分解。结果是一个具有以下形式的字符串:

"(p1**n1)(p2**n2)...(pk**nk)"

举个例子

n = 86240 should return "(2**5)(5)(7**2)(11)"

思路分析

  • n == 1, 返回自身
  • 写一个for 循环, 这个 循环应该从2开始, 已 n+1 结束, 原因是range是前闭后开区间
  • 写一个死循环,去检测, 余数是不是0, 以及当前的因子, 出现的次数
  • 拼接最后的结果

给出答案

def primeFactors(n):
    res = ''
    for i in range(2, n + 1):
        number = 0
        while(n % i == 0):
            number += 1
            n /= i
        if number > 0:
            res += '({}{})'.format(i, '**%d' % number if number > 1 else '')
        if n == 1:
            return res

进一步讨论

# 这个题主要是考察了, 循环的知识点, 如何求余, 字符串拼接, 这一题的难点,在于如何对数字进行分解的思考, 一定要学会复杂的东西细节化,才能做出这种题。

你可能感兴趣的:(数字因子分解)