Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: shanse en 8 Noviembre 2018, 13:27 pm



Título: Ayuda c++ conjetura de Goldbach
Publicado por: shanse en 8 Noviembre 2018, 13:27 pm
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
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5.  
  6. int primo(int n);
  7. void sumadeprimos(int n);
  8. //---------------------
  9.  
  10. int main(){
  11.    int n;
  12.    cout<<"Introduce n: ";
  13.    cin>>n;
  14.  
  15.  
  16.  int i;
  17.  for(i=2;i<n;i++){
  18.  
  19.    if (primo(i) && primo (n-i)){
  20.            if (i<=n-i)
  21.    cout << n << " = " << i << " + " << n-i << endl;
  22.  
  23.  
  24.  
  25.  }
  26.  }
  27. return 0;
  28.  
  29. }
  30. //----------------------
  31.  
  32. int primo(int m){
  33.    int incremen=2;
  34.    bool primo=true;
  35.    while(primo && incremen<m){
  36.        if(m%incremen==0) primo=false;
  37.        ++incremen;
  38.    }
  39.    if (primo) return m;
  40.    else return 0;
  41. }


Título: Re: Ayuda c++ conjetura de Goldbach
Publicado por: K-YreX en 19 Noviembre 2018, 10:05 am
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.