【问题标题】:Program to find a specific prime number end in an infinite loop在无限循环中查找特定素数结束的程序
【发布时间】:2021-09-19 09:44:15
【问题描述】:

嘿,伙计们,我有一个问题,我为 projecteuler 编写了这段代码以找到一个特定的素数,但是 它最终以无限循环结束,我查找并找到了许多替代方案,但想了解为什么这段代码不起作用。我是编程新手,所以如果您也有任何提示可以改进我的代码,我将不胜感激。

import math

x = 1   #number that is getting checked
y = 0   #indicator of how many prime numbers found
a = 0   #the most recent prime number
while y < 6:    
    for i in range (2, int(math.sqrt(x))):
        if (x % i ) == 0:
            x = x + 1
            break
        else:
            a = x
            x = x + 1
            y = y + 1
        break
print (a)

【问题讨论】:

  • 对于所有感兴趣的人,这是问题的链接projecteuler.net/problem=7
  • 你想回答链接中的问题吗?
  • 啊,不像我的问题中所说的,我找到了其他解决方案,但我想了解为什么我的代码以无限循环结束

标签: python math primes


【解决方案1】:

您输入x = 1,然后从2: 开始循环range,因此for 永远不会执行,while 会无限循环。需要以x = 2开头,或者处理x = 1的特殊情况

编辑 该代码适用于 x 至少 9:for 循环永远不会执行,直到 int(math.sqrt(x)) 至少为 3

【讨论】:

  • 嗯,我只是用 x = 2 或 x = 4 试过,但它仍然是一个无限循环
  • 哦,好的,现在它可以工作了,我看到了我的错误,谢谢
猜你喜欢
  • 1970-01-01
  • 2021-04-08
  • 2013-09-30
  • 2020-04-21
  • 1970-01-01
  • 1970-01-01
  • 2014-12-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多