题解 | #质数因子#

质数因子

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

#分解质因数
#输入:一个整数
#输出:将质因数存入prime_list列表,并以空格间隔形式输出
#复杂度:1/2 log n
import sys
import math
for line in sys.stdin:
    n=int(line)
    prime_list=[]
    while True: #单独处理质因数2,这样后续就只需要考虑奇数情况
        if n&1 :
            break
        else:
            prime_list.append(2)
            n>>=1

    i=3
    while i<math.sqrt(n)+1: #如果当前处理后的n,是合数,那么它在sqrt(n)以内必然有因子
        if not n%i:
            prime_list.append(i)
            n=int(n/i) #缩小问题规模-> log n
        else:
            i+=2
    if n!=1: # 如果处理后的n已经是质数或者1,那么上述处理流程必然失效
        prime_list.append(n)
    for i in prime_list:#输出
        print(i,end=" ")

全部评论

相关推荐

11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
11-09 01:22
已编辑
东南大学 Java
高级特工穿山甲:羡慕,我秋招有家企业在茶馆组织线下面试,约我过去“喝茶详谈”😢结果我去了发现原来是人家喝茶我看着
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务