Aquí va el código en Python para hacer el testeo de la ecuación de Goldbach:
def es_primo(n):
if n < 2:
return False
for i in range(2, int(n**0.5)+1):
if n % i == 0:
return False
return True
def lista_primos_con_1(hasta):
"""Genera lista de primos estándar + el 1 al principio."""
primos = [1]
for num in range(2, hasta+1):
if es_primo(num):
primos.append(num)
return primos
def encontrar_goldbach(Canterior, Cobjetivo):
primos = lista_primos_con_1(Cobjetivo)
for i, pi in enumerate(primos):
if pi == 1:
continue # saltar el 1 como pi
# calcular v: sumando todas las diferencias*2 desde pi hasta 1
v = 0
for j in range(i, 0, -1):
v += (primos[j] - primos[j-1]) * 2
d = abs(v - Canterior)
s = pi + d
if es_primo(s) and (pi + s == Cobjetivo):
return (pi, s)
return None
# Ejemplo de uso
Canterior = 98
Cobjetivo = 100
resultado = encontrar_goldbach(Canterior, Cobjetivo)
if resultado:
print(f"{Cobjetivo} = {resultado[0]} + {resultado[1]}")
else:
print(f"No se encontró descomposición para {Cobjetivo}.")
---
¿Qué hace?
Calcula v sumando las diferencias hacia atrás hasta el 1.
Calcula d = |v - Canterior|.
Calcula s = pi + d.
Verifica si s es primo y pi + s = Cobjetivo.
Si encuentra, devuelve el par (pi, s).
Si no, dice que no encontró.
Saludos,
Maxi
No hay comentarios:
Publicar un comentario