题解 | 质数因子

质数因子

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

#一直超时,因为我判断了质数,然后才用这个质数分解。根据质数分解定理,是不用判断的,如果一个数不是质数,在从2加到这个数的过程中,已经被分解掉了。
#在一个就是要有sqrt(),不然还是会超时。
from math import sqrt
'''import sys
for line in sys.stdin:
    a = line.split()[0]
    a=int(a)
    while(a!=1):
        for i in range(2,a+1):
            flag_1=0
            for j in range(2,i+1):
                #print(j)
                if(i%j==0):
                    if (j!=i):
                        #print(i,j)
                        flag_1=1
            #print(i,flag_1)
            if (flag_1==0):
                if(a%i==0):
                    a=a/i  
                    a=int(a)            
                else:
                    continue
                print(i,end=' ') 
                break'''

'''import sys
for line in sys.stdin:
    a = line.split()[0]
    a=int(a)
    b=a
    i=2
    while(True):
        #print('a=',a)
        flag_1=0
        if (i>3):
            for j in range(2,int(sqrt(i+1))):
                #print(j)
                if(i%j==0):
                    flag_1=1
        #print(i,flag_1)
        if (flag_1==0):
            while(b%i==0):
                b=b//i        
                print(i,end=' ') 
            i=i+1   
        
            if(b==1):
                break'''


import sys
for line in sys.stdin:
    a = line.split()[0]
    a=int(a)
    b=a
    i=2
    while(i<sqrt(b)+1):
        while(b%i==0):
            b=b//i        
            print(i,end=' ') 
        i=i+1   
    if(b!=1):
        print(b,end=' ') 

'''import sys
from math import sqrt

for line in sys.stdin:
    a = int(line.strip())
    b = a
    i = 2

    while i * i <= b:  # ✅ 只试到 sqrt(b)
        while b % i == 0:
            b = b // i
            print(i, end=' ')
        i += 1

    if b > 1:
        # ✅ 剩下的 b 一定是一个 > sqrt 原始 a 的质数
        print(b, end=' ')'''

全部评论

相关推荐

2025-12-15 14:25
云南大学 Java
lei22:入职可能会看学信网,最好别伪装,这个简历找实习肯定是够的,肯定会有收 28 届实习生的公司的,多投就行
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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