Python 当t>;=20000?

Python 当t>;=20000?,python,while-loop,Python,While Loop,我正在用python编写一个程序,当n=0-200000之间的任何数字时,它可以找到素数(E)的概率。E=n^2+n+5。然而,当t=200000时,“while true,break”循环不起作用。这是我的密码: #import time #Does E = n^2 + n + 5 always produce prime numbers? n = 0 t = 0 p = 0 while 3 > 2: n2 = n*n E = n2 + n + 5 n = n + 1

我正在用python编写一个程序,当n=0-200000之间的任何数字时,它可以找到素数(E)的概率。E=n^2+n+5。然而,当t=200000时,“while true,break”循环不起作用。这是我的密码:

#import time
#Does E = n^2 + n + 5 always produce prime numbers?
n = 0
t = 0
p = 0
while 3 > 2:
  n2 = n*n
  E = n2 + n + 5
  n = n + 1 
  if E > 1:
    for i in range(2, E):
      if((E % i) == 0):
        print(E, "is not prime.")
        #time.sleep(3)
    else:
      print("Found a prime number!", E)
      #time.sleep(3)
      p = p + 1
  t = t + 1
  if(t >= 200000):
    break

fraction = p/t
percent_int = fraction*100
percent = int(percent_int)
print("The probability of getting a prime number is:", percent)
更改此行:

  if(t >= 200000):
致:


这只需要花费很长时间,因为您在while循环内为范围(2,E):中的i运行


print(t)
放入while循环中,观察程序的进度,了解需要多长时间。

将代码更改为:

n = 0
t = 0
p = 0
while 3 > 2:
   n2 = n*n
   E = n2 + n + 5
   n = n + 1
   if E > 1:
      for i in range(2, E):
         if((E % i) == 0):
              pass
   else:
       print("Found a prime number!", E)
       p = p + 1
   t = t + 1
   print(t)
   if(t >= 200000):
       break

fraction = p/t
percent_int = fraction*100
percent = int(percent_int)
print("The probability of getting a prime number is:", percent)
让它运行表明,
t
只在每次找到素数时递增


您可能希望在其他地方中断,也许将t设置为500

您观察到了哪些特定行为使您认为代码不起作用?“不起作用”比你可能意识到的要模糊得多。
n = 0
t = 0
p = 0
while 3 > 2:
   n2 = n*n
   E = n2 + n + 5
   n = n + 1
   if E > 1:
      for i in range(2, E):
         if((E % i) == 0):
              pass
   else:
       print("Found a prime number!", E)
       p = p + 1
   t = t + 1
   print(t)
   if(t >= 200000):
       break

fraction = p/t
percent_int = fraction*100
percent = int(percent_int)
print("The probability of getting a prime number is:", percent)