Вы можете попробовать это.
def prime_fac(n,count=0,prime_num=2):
if n==1:
print('Number of prime factors',count)
return
elif n%prime_num==0:
print(prime_num)
return prime_fac(n//prime_num,count+1,prime_num)
else:
return prime_fac(n,count,prime_num+1)
prime_fac(100)
prime_fac(12)
prime_fac(999)
output
2
2
5
5
Number of prime factors 4
2
2
3
Number of prime factors 3
3
3
3
37
Number of prime factors 4
Используйте это, если хотите сохранить count простых факторов и уникальные простые множители .
def prime_fac(n,count=0,prime_num=2,prime_set=set()):
if n==1:
print('Number of prime factors',count)
return count,prime_set
elif n%prime_num==0:
print(prime_num)
prime_set=prime_set|{prime_num} #set union operation
return prime_fac(n//prime_num,count+1,prime_num,prime_set)
else:
return prime_fac(n,count,prime_num+1,prime_set)
a=prime_fac(100)
print(a)
выход
2
2
5
5
Number of prime factors 4
(4, {2, 5}) #a looks like this where 4 is prime factors count and {2,5} is unique prime factors.