# Fonction is_prime renvoyant True si l'entier n (supérieur ou égal 3) est premier
# et False sinon.

def is_prime(n):
    i = 3
    for i in range(i,int(m.sqrt(n))+1):
        if n%i == 0:
            return False
    return True

# Fonction goldbach1 renvoyant le nombre décompositions en somme de deux nombres premiers
# de l'entier PAIR n (supérieur ou égal à 4).

def goldbach1(n):
    if n == 4:
        return 1
    else:
        sol = 0
        for i in range(3,n//2+1,2):
            if is_prime(i) and is_prime(n-i):
                sol += 1
        return sol

# PROGRAMME PRINCIPAL
# ===================

import matplotlib.pyplot as plt
import numpy as np

n = 0
SOL = []

while n % 2 != 0 or n < 4:
    n = int(input('Veuillez saisir un entier PAIR supérieur ou égal à 4 : '))

x = np.arange(4,n+1,2)

for i in range(4,n+1,2):
    SOL.append(goldbach1(i))

y = np.array(SOL)

plt.plot(x,y,'.',color='orange')

titre = 'La comete de Goldbach !\n(entiers pairs jusqu\'a ' + str(n) + ')'
plt.title(titre)
plt.xlabel('n')
plt.ylabel('Nombre de decompositions de n\nen somme de deux entiers premiers.')


plt.show()
plt.close()

# FIN DU PROGRAMME PRINCIPAL
# ==========================
