python求一个数的素因子_Python:如何找到一个非常大的数的素因子?

为了获得正确的输出,我对github实现做了一些更改,如下所示。在

1.在Python3中,range()不会自动返回一个列表,所以我将它改为list(range(n+1))

2.我做到了int(n/i-i)import math

# return a dict or a list of primes up to N

# create full prime sieve for N=10^6 in 1 sec

def prime_sieve(n, output={}):

nroot = int(math.sqrt(n))

sieve = list(range(n+1))

sieve[1] = 0

for i in range(2, nroot+1):

if sieve[i] != 0:

m = int(n/i - i)

sieve[i*i: n+1:i] = [0] * (m+1)

if type(output) == dict:

pmap = {}

for x in sieve:

if x != 0:

pmap[x] = True

return pmap

elif type(output) == list:

return [x for x in sieve if x != 0]

else:

return None

然后,在下面的函数中,我将默认值设为primelist=None

^{pr2}$

现在,如果你尝试:print(get_prime_factors(140))

得到正确的输出:[(2, 2), (5, 1), (7, 1)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值