def est_premier(p):
if p < 2:
return False if p == 2:
return True if p % 2 == 0:
return False k = 3
while k**2 <= p:
if p % k == 0:
return False k += 2
return True
def nombre_de_decompositions(n):
nb = 0
for k in range(2, 1 + n//2):
if est_premier(k) and est_premier(n-k):
nb += 1 return nb
for k in range(20):
print(k, nombre_de_decompositions(k))
print('n = 10**4, ', nombre_de_decompositions(10**4)) def nombre_moyen_pairs(N):
total = 0
for j in range(2, 1 + N//2):
total += nombre_de_decompositions(2*j) return total / (N//2 - 1)
def nombre_moyen(N):
total = 0
for j in range(4, 1 + N):
total += nombre_de_decompositions(j) return total / (N - 3)
print('N1 =', 10**3, ', pairs : ', nombre_moyen_pairs(10**3))
print('N1 =', 10**3, ', tous : ',nombre_moyen(10**3)) print('N2 =', 5*10**3, ', pairs : ',
nombre_moyen_pairs(5*10**3))
print('N2 =', 5*10**3, ', tous : ', nombre_moyen(5*10**3))
1
2