'''
Crible d'Eratosthènes recherche des nombres premiers jumeaux. 23 juillet 2023
'''
def sieve_of_eratosthenes(N):
# Créer une liste de booléens pour marquer les nombres premiers (True) et non premiers (False)
primes = [True] * (N + 1)
primes[0], primes[1] = False, False # 0 et 1 ne sont pas premiers
p = 2
while p * p <= N:
if primes[p]:
# Marquer comme non premier tous les multiples de p à partir de p^2
for i in range(p * p, N + 1, p):
primes[i] = False
p += 1
# Retourner la liste des nombres premiers jusqu'Ã N
return [num for num, is_prime in enumerate(primes) if is_prime]
def find_twin_primes(N):
primes_list = sieve_of_eratosthenes(N)
twin_primes = []
for i in range(len(primes_list) - 1):
if primes_list[i + 1] - primes_list[i] == 2:
twin_primes.append((primes_list[i], primes_list[i + 1]))
return twin_primes
# Trouver les nombres premiers jumeaux jusqu'Ã N=50
# =========================
N = 10000 # variable ====
# =========================
twin_primes_list = find_twin_primes(N)
print("Nombres premiers jumeaux jusqu'Ã ", N, ":", twin_primes_list)