首先知道前提:一个数的质因子需要>=2且小于自身平方根
然后是可优化项:在此题中,使用while循环优于for循环,举个最简单的例子:
i=1 while i != 0: i = i+1 #无限循环 i=1 for i in range(i): i = i+1 #只会执行一次
在本题的应用中,求2000014的质因子,
在while循环中,求第二个质因子的循环判定条件为i<int(sqrt(1000007))+1
在for循环中,求第二个质因子的循环判断条件依然为i<int(sqrt(2000014))+1
以下为代码,为了符合在同一行输出的要求,稍显复杂
import math
a=int(input())
i=2
zhi=[]
while a != 1 and i < int(math.sqrt(a)+1):#后面的判断条件是为了节省时间
if a % i != 0:
i += 1
else:
zhi.append(i)
a = int(a / i)
i = 2
if a!=1: #如果是因为i>sqrt(a)结束循环,把最后的质因子补上
zhi.append(a)
print(" ".join(str(x) for x in zhi))



京公网安备 11010502036488号