python - Python for 循环在近百万次迭代后无故停止
问题描述
我一直在尝试解决 Project Euler,但我被困在第三个问题上。我正在使用 python 来查找给定数字的最大素数。我尝试了for循环,然后尝试了while循环。这两个循环都适用于小数字,但不适用于大数字。循环在达到接近百万次迭代时停止。
可能有另一种解决问题的方法,但我的问题是,为什么循环会突然停止?
找到给定数的最大素数
使用 for 循环
prime_lst = []
prime_fac = 0
number = 600851475143
for i in range(2,int(number/2)):
if number%i == 0:
for j in range(2,i):
if i%j == 0:
prime_fac += 1
if prime_fac < 1:
print(i)
prime_lst.append(i)
print(prime_lst[len(prime_lst)-1])
使用 while 循环
def prim_fac(n):
i = 2
prime_fac = []
prime_num = 0
while i < n:
if n % i == 0:
j = 2
while j < i:
if i % j == 0:
prime_num += 1
j += 1
if prime_num < 1:
prime_fac.append(i)
i += 1
print(prime_fac[len(prime_fac)-1])
pri_fac(600851475143)
解决方案
推荐阅读
- javascript - ScrollMagic + TweenMax:同时绘制多个 SVG 路径?
- c++ - 调试可变参数
- vba - 用于数据验证的 VBA
- javascript - 如何更改 Bootstrap 本地化?
- python - 在 tf.nn.top_k 中加入 torch.topk 的 dim 参数
- authentication - 如何在 UserAuth 中编辑属性的 DataTypes
- python - 硬币槽树莓派的 Python 脚本
- javascript - SVG Circle:圆形裁剪图像
- javascript - 承诺一切不开火
- java - 关闭的 Google 广告横幅不再显示