2024-06-28 20:32:35 发布
网友
我目前正在学习Python,并练习euler的问题。 我被困在第三个问题上,我的代码对大数字不起作用,但对其他数字起作用
n = 600851475143 x = 0 for i in range(2,n): if(n%i == 0): if(x < i): x = i print(x)
控制台只是没有得到任何结果和故障。 P.Shttps://projecteuler.net/problem=3
(抱歉我的英语不好)
检查此代码将节省大量时间
使用sqrt进行优化
sqrt
from math import sqrt def Euler3(n): x=int(sqrt(n)) for i in range(2,x+1): while n % i == 0: n //= i if n == 1 or n == i: return i return n n = int(input()) print(Euler3(n))
另外,请检查我的Euler git repo
python2中只有6种解决方案,虽然很旧,但它们都经过了很好的优化
它正在运行,但所需的时间是巨大的。 您可以通过以下代码进行检查,它将继续打印x
x
n = 600851475143 x = 0 for i in range(2, n): if n % i == 0: if x < i: x = i print(x)
为了节省时间,您可以尝试以下代码而不是您的代码:
n = 600851475143 x = 0 for i in range(2, n): if n % i == 0: x = n // i break print(x)
即时打印8462696833。但正如@seesharper在评论中所说,这只是最大的因素,而不是一个主要的因素。所以这不是对Project Euler Problem #3的正确答案
8462696833
from tqdm.auto import tqdm n = 600851475143 x = 0 for i in tqdm(range(2,n)): if(n%i == 0): x = i print(x)
如果使用经典python,您的程序将持续至少40分钟,这就是您没有输出的原因。我建议您要么使用numpy来完成,要么添加一个步骤,因为我认为即使是数字也行不通
我使用tqdm来估计for循环运行所需的时间,您可以使用pip install tqdm下载它
pip install tqdm
检查此代码将节省大量时间
使用
sqrt
进行优化另外,请检查我的Euler git repo
python2中只有6种解决方案,虽然很旧,但它们都经过了很好的优化
它正在运行,但所需的时间是巨大的。 您可以通过以下代码进行检查,它将继续打印
x
为了节省时间,您可以尝试以下代码而不是您的代码:
即时打印
8462696833
。但正如@seesharper在评论中所说,这只是最大的因素,而不是一个主要的因素。所以这不是对Project Euler Problem #3的正确答案如果使用经典python,您的程序将持续至少40分钟,这就是您没有输出的原因。我建议您要么使用numpy来完成,要么添加一个步骤,因为我认为即使是数字也行不通
我使用tqdm来估计for循环运行所需的时间,您可以使用
pip install tqdm
下载它相关问题 更多 >
编程相关推荐