无法根据方程式预测最佳答案的可能性的程序无法正常工作

我正在编写一个程序来更改n的值(在E = n ^ 2 + n + 5的等式中),并预测E为素数的可能性。这是我的代码:

n = 0
t = 0
p = 0
while 3 > 2:
  nn = n*n
  E = nn + n + 5
  n = n + 1
  if E > 1:
    for i in range(2,E):
        if((E % i) == 0):
          print(E,"is not prime when n =",n)
        else:
          print("Found a prime!",E,"when n =",n)
  t = t + 1
  print(t)
  if(t >= 50):
      break

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

但是,该程序无法正常工作。当我知道不是素数(n = 1产生素数)时,总是说得到素数的概率为0%。

q273225308 回答:无法根据方程式预测最佳答案的可能性的程序无法正常工作

for i in range(2,E):
    if((E % i) == 0):
      print(E,"is not prime when n =",n)
    else:
      print("Found a prime!",E,"when n =",n)

应该是(因为在尝试所有整数之前,您不知道E是否为素数)

for i in range(2,E):
        if((E % i) == 0):
          print(E,n)
          break
else:
    print("Found a prime!",n)
    p += 1  # you also need to incrment p

但是,该程序可以简化为以下替代方案

from math import sqrt; from itertools import count,islice

def is_prime(n):
    " checks if input is prime"
    # Code from https://stackoverflow.com/questions/4114167/checking-if-a-number-is-a-prime-number-in-python)
    return n > 1 and all(n%i for i in islice(count(2),int(sqrt(n)-1)))

def calc_E(n):
  " converts n to your e value"
  return n*n + n + 5

# Counts the number of primes found for input n in the range 0 to 50.
p = sum(1 if is_prime(calc_E(n)) else 0 for n in range(51))
t = len(range(51))
print(p)
print(t)

percent_int = fraction*100
percent = int(percent_int)
print("The rounded probability of getting a prime number is:",percent_int,"%")
本文链接:https://www.f2er.com/3116791.html

大家都在问