According to Goldbach's conjecture, every even number greater than 6 can be expressed as the sum of two prime numbers smaller than itself.
This Python program:
- Reads multiple even numbers greater than 6 from the user
- Finds two prime numbers whose sum equals each input number
- Continues running until the user chooses to exit
prim(n): Returns a list of all prime numbers less than nfind_two_numbers(n, primes): Finds two primes from the list whose sum equals n
def prim(n):
primes = []
for num in range(2, n):
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
break
else:
primes.append(num)
return primes
def find_two_numbers(n, primes):
for i in primes:
if (n - i) in primes:
return i, n - i
return None, None
# Program loop
while True:
num = int(input("Enter an even number greater than 6 (0 to exit): "))
if num == 0:
print("Exiting program.")
break
if num <= 6 or num % 2 != 0:
print("Input must be an even number greater than 6.")
continue
primes = prim(num)
a, b = find_two_numbers(num, primes)
if a and b:
print(f"{num} = {a} + {b}")
else:
print("No prime pair found for this number.")
Enter an even number greater than 6 (0 to exit): 30
30 = 7 + 23
Enter an even number greater than 6 (0 to exit): 42
42 = 5 + 37
Enter an even number greater than 6 (0 to exit): 0
Exiting program.
- The prim(n) function uses trial division to find all primes less than n
- The find_two_numbers(n, primes) function searches for a pair of primes that sum to n
- The program runs in a loop until the user enters 0 to exit