lunes, 28 de abril de 2025

Testeo de la ecuación de goldbach en Python

Estimados lectores,

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

Nuevo artículo en Zenodo modelo de desarrollo integrado

Estimados lectores, Les dejo el link del último ensayo publicado. Un modelo económico que seguro les va a interesar por lo integrador de var...