最后一个2000000014超时问题,2000000014除以2 得1000000007,需要循环1000000006才能得到1000000007没有质数因子,
加判断素数,循环(int(sqrt(1000000007))+1 - 5)/ 6 = 5269 次,得1000000007不能再分解,直接输出
from math import sqrt
def is_prime(n):
if n < 2:
return False
if n == 2 or n == 3:
return True
if n % 6 != 1 and n % 6 != 5:
return False
for i in range(5, int(sqrt(n))+1, 6):
if n % i == 0 or n % (i + 2) == 0:
return False
return True
num = int(input())
term = []
if num == 1 or num == 2 or num ==3:
result = num
else:
for i in range(2,num//2+1):
while num % i == 0:
term.append(str(i))
num = int(num / i)
if is_prime(num):
term.append(str(num))
break
result = ' '.join(term)
print(result)



京公网安备 11010502036488号