最后一个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)