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