寻找分解质因数(5kyu)
问题描述:
Given a positive number n > 1 find the prime factor decomposition of n. The result will be a string with the following form ;
“(p1**n1)(p2**n2)…(pk**nk)”
Example: n = 86240 should return “(2**5)(5)(7**2)(11)”
我的解决代码
def prime_factors(n):
powers = {} # 存放质因数与其幂次
i = 2
while i <= n:
if n % i == 0:
n = n / i
if i in powers:
powers[i] += 1
else:
powers[i] = 1
else:
i += 1
returns = ''
for k, v in powers.items():
if v != 1:
returns += '(%s**%s)'%(k,v)
else:
returns += '(%s)'%(k)
return returns