题解 | #质数因子#

质数因子

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)
全部评论
这个不怎么看的懂啊,谁给解释下
点赞 回复 分享
发布于 2022-02-22 19:34

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务