python中prime_python中的Prime分解程序没有输出

在解决Euler问题3时,遇到Python代码在处理大数600851475143的素因数分解时无输出的问题。当前代码效率低下,O(N^2)的时间复杂度导致对大数处理失败。采用改进算法,限制q_prime和prime_factor的检查范围至sqrt(n),解决了内存和计算时间问题。但代码仍需进一步优化以适应更大数值。
摘要由CSDN通过智能技术生成

我正在研究Euler问题3的项目,

The prime factors of 13195 are 5, 7, 13 and 29.What is the largest prime factor of the number 600851475143 ?

我提出的代码如下:

def q_prime(a):

if a == 2:

return True

elif a < 2:

return False

for i in range(2,a):

if a%i == 0:

return False

else:

return True

def prime_factor(x):

prime_factors =[]

for i in range(1,x):

if q_prime(i) == True and x%i == 0:

prime_factors.append(i)

return prime_factors

调用13195函数,我得到了预期的[5,7,13,29]。我尝试了一些其他的组合,比如1035,它给出了[3,5,23]。但是,当我在600851475143上调用这个函数时,我没有得到输出。此外,我也没有收到错误消息。它运行一段时间,然后简单地重新启动shell

我知道这不是一个优雅的代码,而且我猜暴力迫使我通过这样一个问题为大量的是导致这个问题?到底发生了什么?

考虑到问题的大小,您编写的两个函数都有问题。q_prime

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值