In his conjecture, Goldbach was considering 1 as a prime number. By convention we no longer consider 1 as a prime number. And Euler later modified the conjecture as follows:
In 1742, a German amateur mathematician named Christian
Goldbach wrote to Leonhard Euler with the following conjecture:
Every number greater than 2 can be written as the sum of three prime numbers.
In his conjecture, Goldbach was considering 1 as a prime number. By convention we no longer consider 1 as a prime number. And Euler later modified the conjecture as follows:
Every even number greater than or equal to 4 can be expressed as the sum of two prime numbers.
For example:
8 = 3 + 5
20 = 3 + 17 = 7 + 13
42 = 5 + 37 = 11 + 31 = 13 + 29 = 19 + 23
There is no formal proof of this conjecture. However, we can verify Goldbach’s conjecture in certain ranges. For this programming assignment you are asked to verify Goldbach’s conjecture in a user defined range. You will prompt the user to enter the range and then your program will print out all the even numbers in that range (inclusive of the end points) in the form n = a + b, where a and b are prime numbers and a <= b. Each even number should be on a separate line followed by all possible unique pairs of prime numbers. Your sample output should look like this:
Enter the lower limit: 4
Enter the upper limit: 100
4 = 2 + 2
6 = 3 + 3
8 = 3 + 5
10 = 3 + 7 = 5 + 5
….
….
100 = ….
You will do the following error checking on the input:
Lower limit is equal to or greater than 4
Both lower limit and upper limit are even
Lower limit is strictly less than upper limit
Even if only one of these conditions fails, prompt the user to enter both the limits repeatedly.
————————————————
This is what I wrote so far. But I am getting wrong answer.
def is_prime(n):
if (n==1):
return False
limit = int(n**0.5)+1
div=2
while (div<limit):
if (n%div == 0):
return False
div +=1
return True
def main():
lower = eval(input(“Enter lower limit equal to or greater than 4: “))
while lower<4 or lower%2 != 0:
lower = eval(input(“Enter lower limit equal to or greater than 4: “))
print(lower)
upper = eval(input(“Enter upper limit: “))
while upper%2 != 0 or upper<=lower:
upper = eval(input(“Enter upper limit: “))
print(upper)
for target in range(lower, upper+1, 2):
for a in range(0, (target//2)+1):
if is_prime(a):
if is_prime(target-a):
print(target, “=”, a, “+”, target-a)
a = a+1