给一个 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
进一步讨论
# 这个题主要是考察了, 循环的知识点, 如何求余, 字符串拼接, 这一题的难点,在于如何对数字进行分解的思考, 一定要学会复杂的东西细节化,才能做出这种题。
网友评论