Todo número par mayor que 2 puede escribirse como suma de dos números primos, fue enunciada por Christian Goldbach, fue formulada el 7 de junio de 1742 en una carta dirigida a Leonhard Euler.
La carta se puede descargar en este enlace:
En este video se explican las dos conjeturas, la fuerte y la débil (ya demostrada)
Entramos a destripar el contenido, cualquier numero se puede descomponer en la suma de dos números, como por ejemplo:
La descomposición de 10, en suma de número es :
los valores son 1 y 9
los valores son 2 y 8
los valores son 3 y 7
los valores son 4 y 6
los valores son 5 y 5
los valores son 1 y 9
los valores son 2 y 8
los valores son 3 y 7
los valores son 4 y 6
los valores son 5 y 5
La descomposición no tiene por que ser única, pueden existir en el caso del cumplimiento, dos o más parejas de primos.
en la conjetura sólo nos interesan los impares, que son los que potencialmente pueden ser primos
Os dejo un programa en Python que hace la descomposición en sumas, para obtener sólo los impares, hay que cambier el 1 en rojo por un 2 así de fácil.
# scrip para comprobar la conjetura de Goldbach
# todo numero par mayor de 2 se puede descompomener en la suma de dos numeros primos
numero=int(input('Introduce el numero par a descomponer '))
if (numero%2)==0 and numero>=2:
for n in range(1, (numero+1)//2+1,1):
print('los valores son {0:d} y {1:d} '.format(n,numero-n))
# en la descomposicion solo se toman los numeros impares
else:
print('El numero {0:d} no es par o es menor o igual a 2 '.format(numero))
# colocamos un input para que no se cierre la ventana del sistema operativo
print("Fin de los calculos pulsa intro para terminar ")
tecla = input()# colocamos un input para que no se cierre la ventana del sistema operativo
# colocamos un input para que no se cierre la ventana del sistema operativo
print("Fin de los calculos pulsa intro para terminar ")
tecla = input()# colocamos un input para que no se cierre la ventana del sistema operativo
Ahora biene lo bueno, durante casi trescientos años no se ha podido demostrar o refutar la conjetura, con la llegada de los ordenadores, se está intentando comprobar mediante cálculo encontrar un número, cuyos pares de suma no tenga un par de primos, es decir se busca la suma de dos números impares en lo que en todas las sumas posibles no aparezcan dos números primos.
Si tenemos paciencia y un sistema computacional del estilo de los usados en minado de Criptomonedas, podemos intentar poner a prueba la conjetura, a continuación el código en Python, funciona para los pares mayores de 6, ¿por que?, el número 4, se descompone en 2+2 y 3+1, los primeros con pares (el 2 el único primo par) y en el segundo caso el 1, no es primo.
# todo scrip para comprobar la conjetura fuerte de Goldbach
# todo numero par mayor de 2 se puede descompomener en la suma de dos numeros primos
# todo a partir del 6 comprobando solo los impares
from sympy import isprime
maximo=int(input('Mayor numero a manejar='))
detectados=0 #casos que incumplen la conjetura
for numero in range(6,maximo+1,2):
#print('Descomposicion del numero {0:d}'.format(numero))
contador=0
for n in range(1, (numero+1)//2+1,2):
n_derecha=n
n_izquierda=numero-n
if (isprime(n_derecha)==True) and (isprime(n_izquierda)==True) and n_derecha+n_izquierda==maximo :
contador=contador+1
if contador==0:
detectados=detectados+1
print('No se cumple para el numero {0:d}'.format(numero))
print('Por lo que la conjetura tieme un contraejemplo y no es cierta')
print('Se detecta un caso de inclumplimiento para el numero {0:d} '.format(numero))
break
print('No se detecta caso de inclumplimiento hasta el numero {0:d} '.format(numero))
#colocamos un input para que no se cierre la ventana del sistema operativo
print('Fin de los calculos pulsa intro para terminar ')
tecla = input()# colocamos un input para que no se cierre la ventana del sistema operativo
# todo numero par mayor de 2 se puede descompomener en la suma de dos numeros primos
# todo a partir del 6 comprobando solo los impares
from sympy import isprime
maximo=int(input('Mayor numero a manejar='))
detectados=0 #casos que incumplen la conjetura
for numero in range(6,maximo+1,2):
#print('Descomposicion del numero {0:d}'.format(numero))
contador=0
for n in range(1, (numero+1)//2+1,2):
n_derecha=n
n_izquierda=numero-n
if (isprime(n_derecha)==True) and (isprime(n_izquierda)==True) and n_derecha+n_izquierda==maximo :
contador=contador+1
if contador==0:
detectados=detectados+1
print('No se cumple para el numero {0:d}'.format(numero))
print('Por lo que la conjetura tieme un contraejemplo y no es cierta')
print('Se detecta un caso de inclumplimiento para el numero {0:d} '.format(numero))
break
print('No se detecta caso de inclumplimiento hasta el numero {0:d} '.format(numero))
#colocamos un input para que no se cierre la ventana del sistema operativo
print('Fin de los calculos pulsa intro para terminar ')
tecla = input()# colocamos un input para que no se cierre la ventana del sistema operativo
tengo que indicar que la comprobación de la primalidad se deja en manos del paquete sympy, concretamente de la funcion isprime ¿?
No hay comentarios:
Publicar un comentario