问题:
计算一个数的质因数个数,1不是质因数。比如20=2*2*5,2、2、5就是20的三个质因数。
思路:
从小到大,找到N的因数M,递归查找M和N/M的的质因数。
def count_prime(number, expr):
count = 0
for i in range(2, number/2 + 1):
if number%i == 0:
(count_i, epxr) = count_prime(i, expr)
if count_i == 0:
expr += "%s * "%i
count += 1
else:
count += count_i
left = number/i
(count_left, expr) = count_prime(left, expr)
if count_left == 0:
expr += "%s * "%left
count += 1
else:
count += count_left
break
return (count, expr)
number = input("input a number: ")
(count, expr) = count_prime(number, "")
print("There are %d primes for %d"%(count, number))
print("expr is %s"%expr[:-3])