Programa: Conjetura Goldbach

Alberto Larrauri Borroto

/* Se trata de un programa que escribe todos los números pares menores que uno dado como suma de dos números primos (la conjetura de Goldbach afirma que esto es posible para todo número par mayor que dos). */

#include<iostream>;
#define MAX 100

using namespace std;
int prim[MAX]; // Array que almacena los números primos menores que n;
int n, lis;
// n va a ser el número máximo y lis va a ser el número de primos menores que n;
void listprim(); // Función que llenará nuestro array de primos;

int main()
{
cout<<"Introduce el maximo :"<<endl; cin>>n;
listprim();
for(int m=4; m<n; m+=2){
//Vamos probando parejas de números de nuestra lista buscando alguna que sume m
for(int a=0; a<lis; a++){
for(int b=a; b<lis; b++){
/*Iniciamos la variable b al valor de a, ya que si no volveremos a
comprobar parejas ya descartadas */
if(prim[a]+prim[b]==m){
cout<<endl<<prim[a]<<" + "<<prim[b]<<" = "<<m; goto salida; /*No quiero usar 'goto' pero no se me ha ocurrido otra manera de salir de los dos bucles for y evitar que el programa muestre varias parejas de primos para cada número par. Borrad esta linea y el programa os dará todas las parejas de primos que suman cada número par menor que n */ } } } salida: //Destino del goto continue; } return 0; } void listprim() { /*Aqui la idea es ir cogiendo número por número los menores que n y mirar si tienen algun divisor propio. Sin embargo, no hace falta que revisemos todos los números menores que uno dado para saber si éste es primo. Por ejemplo, si queremos saber si el 23 es primo: 23 % 2 != 0. Así que si 23 tiene algún divisor entero, será menor que 11, ya que si x>=12,
23/x <= 2. Ahora probamos con el siguiente, el 3, y al ver que tampoco es divisor de 23
resulta que solo tenemos que probar hasta el 7 (7=23/3) y la comprobación terminará con
que 23 es primo.  */
lis=0;
int maax;
bool vale=true;
for(int a=2; a<n; a++){
maax=a;
for(int b=2; b<maax;b++){
if(a%b==0){
b=maax;
vale=false;
}else{
maax=a/b;
}
}
if(vale==true){
prim[lis]=a;
lis++;
}
vale=true;
}
}
Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s