[ Foro de C++ ]

Ayuda c++

14-Nov-2018 13:15
Invitado (Pedro)
3 Respuestas

Definiremos número primo absoluto a un número primo que las sucesivas sumas de sus dígitos (hasta llegar a un número de un solo dígito) también son números primos. ejemplo:

29 es un número primo
La suma de sus dígitos 2 + 9 = 11 también es un número primo
La suma de los dígitos de 11 1 + 1 = 2 también es un número primo
Por lo tanto, 29 es un número primo absoluto.
Evidentemente los números primos de una sola cifra son todos primeros absolutos.

Queremos el listado secuencial de todos los números primos absolutos entre 1 y el <max> indicado.


EJEMPLO:
PRIMEROS ABSOLUTOS
INTRODUCE UN MÁXIMO [> 1]: 100
2 3 5 7 11 23 29 41 43 47 61 83


14-Nov-2018 13:43
Nacho Cabanes (+83)

¿Qué has hecho y qué no sabes hacer?


14-Nov-2018 21:48
Invitado (Pedro)

Solo me falta que me liste todos los números hasta el número máximo.


int main() {
    cout<<"INTRODUCE UN MAXIMO[>1]: "<<endl;
    int N;
    cin>>N;
    int suma=0;
    int suma_total=0;
    int divisor = 2;


 bool is_prime = (N !=1);

 while (divisor < N ){
 if (N%divisor == 0) is_prime = false;
 divisor = divisor + 1;
 }




while(N>0){
 suma=suma+(N%10);
 N=N/10;
}
while(suma>0){
    suma_total=suma_total+(suma%10);
 suma=suma/10;

}

 int divisor2 = 2;
 bool es_primo = (suma_total!= 1);
 while (divisor2 < suma_total){
 if (suma_total%divisor2 == 0) es_primo = false;
 divisor2 = divisor2 + 1;

 }

if (is_prime and es_primo)


 


04-Dec-2018 20:42
Nacho Cabanes (+83)

No acabo de entender la lógica que planteas.

¿Por qué no usas dos funciones auxiliares, una para ver si es primo y otra para sumar sus dígitos?






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)