Python 试图找到第1000个素数
我正试图用python编写一个脚本来查找第1000个素数。我不明白为什么这不管用。基本上,虽然mod小于数字的平方根,并且仍然有余数,但mod会上升1。这应该持续到mod等于该数字的平方根为止。然后,检查应保持在0,数字应为素数。每次我尝试运行脚本时,它都会告诉我有一个系统错误Python 试图找到第1000个素数,python,primes,Python,Primes,我正试图用python编写一个脚本来查找第1000个素数。我不明白为什么这不管用。基本上,虽然mod小于数字的平方根,并且仍然有余数,但mod会上升1。这应该持续到mod等于该数字的平方根为止。然后,检查应保持在0,数字应为素数。每次我尝试运行脚本时,它都会告诉我有一个系统错误 import math b=2 count=2 next_odd=3 next_prime=1 check = 0 while count<=10: while b<float(math.sqrt(
import math
b=2
count=2
next_odd=3
next_prime=1
check = 0
while count<=10:
while b<float(math.sqrt(next_odd)):
if next_odd%b>0:
b+=1
if next_odd%b == 0:
check+=1
if check > 0:
next_prime=next_odd
next_odd+=2
print(next_prime)
b=2
count+=1`
导入数学
b=2
计数=2
下一个奇数=3
下一个素数=1
检查=0
计数为0时:
下一个素数=下一个奇数
下一个奇数+=2
打印(下一个素数)
b=2
计数+=1`
我理解您的意图,但不幸的是,您的程序有太多问题。这是一个工作版本。我做了最小的改变。希望您能将下面的版本与自己的版本进行比较,看看哪里出了问题
import math
count=2
next_odd=3
next_prime=1
while count<=1000:
b=1
check = 0
while b<float(math.sqrt(next_odd)):
b+=1
if next_odd%b == 0:
check+=1
if check == 0:
next_prime=next_odd
print(next_prime)
count+=1
next_odd+=2
导入数学
计数=2
下一个奇数=3
下一个素数=1
虽然count我理解您试图做什么,但不幸的是,您的程序有太多错误。这是一个工作版本。我做了最小的改变。希望您能将下面的版本与自己的版本进行比较,看看哪里出了问题
import math
count=2
next_odd=3
next_prime=1
while count<=1000:
b=1
check = 0
while b<float(math.sqrt(next_odd)):
b+=1
if next_odd%b == 0:
check+=1
if check == 0:
next_prime=next_odd
print(next_prime)
count+=1
next_odd+=2
导入数学
计数=2
下一个奇数=3
下一个素数=1
而count(首先,我假设代码末尾的勾号是堆栈溢出帖子中的输入错误,而不是代码本身)
考虑一下当next\u odd
为素数时会发生什么。该区块:
while b<float(math.sqrt(next_odd)):
if next_odd%b>0:
b+=1
if next_odd%b == 0:
check+=1
有关此代码的几点:
- 全局范围中没有(非常量)变量。这使得解释脚本的状态如何随时间变化变得更加容易
- 在while循环上使用for循环可以保证我们的脚本不会因为错误(或未解释的)条件而陷入无限循环
- for循环的使用意味着我们不必担心自己增加所有变量,这大大减少了我们必须管理的状态量
希望有帮助
哦,注意还有更有效的方法来计算素数。请参见(首先,我假设代码末尾的勾号是堆栈溢出帖子中的输入错误,而不是代码本身)
考虑一下当next\u odd
为素数时会发生什么。该区块:
while b<float(math.sqrt(next_odd)):
if next_odd%b>0:
b+=1
if next_odd%b == 0:
check+=1
有关此代码的几点:
- 全局范围中没有(非常量)变量。这使得解释脚本的状态如何随时间变化变得更加容易
- 在while循环上使用for循环可以保证我们的脚本不会因为错误(或未解释的)条件而陷入无限循环
- for循环的使用意味着我们不必担心自己增加所有变量,这大大减少了我们必须管理的状态量
希望有帮助
哦,注意还有更有效的方法来计算素数。请看你有一个`
就在计数+=1之后
什么“系统错误”?我猜是一个语法错误如果我理解正确,那么如果对于任何b,next_odd%b==0,那么它将导致支票增加到无穷大。b=2
和next_odd=3
<代码>而b
->而2<1.732
永远不会发生,b
和check
永远不会改变,这是一个无限循环。如果不是语法错误,我不知道什么是系统错误,但是如果你把它放入一个自动检查中,测试它是否有正确的答案,可能它超时了。你有一个`
就在count+=1
什么“系统错误”之后?我猜是一个语法错误,如果有b,我理解正确,next_odd%b==0,那么它将导致check递增到无穷大。b=2
和next_odd=3
<代码>而b
->而2<1.732
永远不会发生,b
和check
永远不会改变,这是一个无限循环。如果不是语法错误,我不知道什么是系统错误,但是如果你把它放到一个自动检查中,测试它是否有正确的答案,可能它超时了。勾号是个错误,对不起!非常感谢,我知道我错在哪里了。滴答声是个错误。对不起!非常感谢,我明白我错在哪里了。