描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
数据范围: 1≤n≤2×109+14
输入描述:
输入一个整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。
示例1
输入:180
输出:2 2 3 3 5
平方根法
每一个正整数的质数因子都不会超过本身的算术平方根+1,这样会大大降低计算时间
n = int(input())
def func(n):
prime_n = 1 # num为质数的标志
for i in range(2,int(n**0.5+1)):
if n % i == 0: # num整除i
prime_n = 0 # num非质数
print(i,end=' ')
n = n//i # 更新num,接下来的工作就是找新一轮的num的质数因子
func(n) # 递归
break # 递归结束条件
# 判断当前数是否为质数
if prime_n == 1: # 若从2到int(num**0.5+1)都无法整除num,那说明num是一个质数,直接输出
print(n,end=' ')
func(n)