题解 | 质数因子

质数因子

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

def euler_sieve(x):
    isprime = [True]*(x+2)
    primes = []
    for i in range(2,x+1):
        if isprime[i]:
            primes.append(i)
        for j in primes:
            if j*i > x:
                break
            isprime[j*i] = False
            if i%j == 0:
                break
    return primes


n = int(input())
l = []
primes = euler_sieve(int(n**0.5)+3)
index = 0
maxindex = len(primes)-1
while n != 1 and index != maxindex:
    if n%primes[index] == 0:
        n //= primes[index]
        l.append(primes[index])
    else:
        index += 1
if n != 1:
    l.append(n)
print(" ".join(map(str,l)))

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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