题解 | #质数因子#
质数因子
http://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
import sys, math
num = int(sys.stdin.readline().strip())
ret = ''
# 判断质数
def iz(k):
if k == 1:
return 0
if k in (2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37):
return 1
for i in (2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37):
if k % i == 0:
return 0
for i in range(37, int(math.sqrt(k)) + 1):
if k % i == 0:
return 0
return 1
# 找最近的质数
def findZ(n, sup):
while n < sup:
if iz(n):
return n
n += 1
return 0
n = findZ(2, num)
while n != 0:
while num % n == 0:
ret += str(n) + ' '
num = num // n
if iz(num):
ret += str(num) + ' '
break
n = findZ(n + 1, num)
print(ret)