首先知道前提:一个数的质因子需要>=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))