Ayuda c++ conjetura de Goldbach

Iniciado por shanse, 8 Noviembre 2018, 13:27 PM

0 Miembros y 1 Visitante están viendo este tema.

shanse

Alguien me ayuda a acabar este programa, necesito que no me enseñe todas las descomposiciones, solo la que contenga el valor de a menor:

Se pide que, dado como entrada un entero mayor que 2, nos muestre, para cada valor k desde 3 hasta el valor entrado (sea par o impar), una descomposición de k de la forma k = a + b, donde a y b son números primos.

Si la descomposición no es posible, el programa deberá indicarlo según ejemplo.

Como la descomposición puede no ser única, se pide la que contenga el valor de a menor.






EJEMPLOS:
DESCOMPOSICIÓN EN SUMA DE DOS PRIMEROS
INTRODUCE UN MÁXIMO [> 2]: 3
3 = Inexistente

DESCOMPOSICIÓN EN SUMA DE DOS PRIMEROS
INTRODUCE UN MÁXIMO [> 2]: 23
3 = Inexistente
4 = 2 + 2
5 = 2 + 3
6 = 3 + 3
7 = 2 + 5
8 = 3 + 5
9 = 2 + 7
10 = 3 + 7
11 = Inexistente
12 = 5 + 7
13 = 2 + 11
14 = 3 + 11
15 = 2 + 13
16 = 3 + 13
17 = Inexistente
18 = 5 + 13
19 = 2 + 17
20 = 3 + 17
21 = 2 + 19
22 = 3 + 19
23 = Inexistente



Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;



int primo(int n);
void sumadeprimos(int n);
//---------------------

int main(){
    int n;
    cout<<"Introduce n: ";
    cin>>n;


  int i;
  for(i=2;i<n;i++){

    if (primo(i) && primo (n-i)){
            if (i<=n-i)
    cout << n << " = " << i << " + " << n-i << endl;



  }
  }
return 0;

}
//----------------------

int primo(int m){
    int incremen=2;
    bool primo=true;
    while(primo && incremen<m){
        if(m%incremen==0) primo=false;
        ++incremen;
    }
    if (primo) return m;
    else return 0;
}

K-YreX

Estaba echando un vistazo a los posts y me pareció interesante este programa por lo que me puse a investigar.Ya he conseguido crear el programa y te comento: si tienes un bucle que te crea n soluciones y tú sólo quieres la primera, debes ponerle dos condiciones al bucle y una vez obtengas la primera solución, cambias el valor de una condición para que salga inmediatamente y no siga calculando. Con eso ya debería ayudarte a que no te muestre todas las soluciones.
Suerte.
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;