题解 | #质数因子#

质数因子

https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607

import sys
import math


def prime_gen(upper_bound):
    # 质数生成器函数
    remaining = set(range(2, upper_bound + 1)) # 生成集合存放待测试的数
    while remaining:
        i = min(remaining) # 取最小的数
        remaining.discard(i) 
        yield i
        not_prime = {num for num in remaining if num % i == 0 }
        remaining.difference_update(not_prime) # 从集合移除被 i 整除的数


number = int(sys.stdin.read())
result = list()
quotient = number

for prime_to_test in prime_gen(int(math.sqrt(number))):
    if prime_to_test * prime_to_test > quotient:
        break
    while quotient % prime_to_test == 0:
        quotient /= prime_to_test
        result.append(prime_to_test)

if quotient != 1:
    result.append(int(quotient))
output_str = ' '.join([str(p) for p in result])
print(output_str)
全部评论

相关推荐

03-16 22:00
武汉大学 C++
幸福的小熊猫想要offer:我阿里投的 c++岗,面试官说自己是做 java 的,c++这辈子才有了
点赞 评论 收藏
分享
SadnessAlex:跟三十五岁原则一样,人太多给这些***惯坏了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务