Je suis à la recherche d'un script qui me permettrait de compter le nombre de façons de la fonction de Goldbach pour des nombres > 2000000000.
Actuellement j'ai ce code Python mais il ne marche pas pour les grands nombres.
n = int(input(">")) def genprimes(n): limitn = n+1 not_prime = set() primes = [] for i in range(2, limitn): if i in not_prime: continue for f in range(i*2, limitn, i): not_prime.add(f) primes.append(i) return primes nos=0 primes = genprimes(n) for prime in primes: if n-prime in primes: nos += 1 print(str(int((nos/2)+0.5)))
Pouvez-vous me proposer un code qui marche sur les grands nombres ? Merci.
Veux-tu savoir le nombre de façons différentes pour lesquelles un nombre pair est la somme de deux nombres premiers?
J'utiliserais le crible d'Ératosthène de baseAu départ.
-
m = 10**10
P = [i for i in range(m+1)]
P[:2] = [0] * 2
for n in range(2, int(m**0.5)+1):
if P[n]:
P[n*n::n] = [0] * ((m-n*n+n) // n)
-
Tu parcours la liste P dans les positions impaires dans deux boucles imbriquées et tu ajoutes 1 à la position donnée par la somme des deux nombres premiers.
Tu peux placer d'office P[4] = 1 car 4 = 2 + 2
Ensuite, tu parcours les positions paires qui te donneront le nombre de façons différentes pour exprimer chaque nombre pair comme la somme de deux nombres premiers.
edit: Je suppose que tu as eu un MemoryError à cause du set() qui est trop gros.
J'en ai avec P = [100] * 10**10 alors ...
- Edité par PierrotLeFou 1 décembre 2023 à 5:00:35
Le Tout est souvent plus grand que la somme de ses parties.
Programme Python et conjecture de Goldbach
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
Jeu du carré rouge modifié, quel niveau atteindrez-vous ? http://squared.go.yj.fr
Le Tout est souvent plus grand que la somme de ses parties.