Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Pentix05 en 1 Noviembre 2021, 20:53 pm



Título: Duda de un programa
Publicado por: Pentix05 en 1 Noviembre 2021, 20:53 pm
Hola buenas estoy ingresando por primera vez en la programacion de c++ y tengo un programa resuelto y bien hecho sobre los cien primeros numeros omirp. Pero hay una parte del codigo que no la entiendo.


Código
  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int num, omirp, aux2, a, b;
  6. double aux, numIm;
  7. a=1;
  8. b=2;
  9. while(b<=100)
  10. {
  11. num=a;
  12. numIm=0;
  13. for(int i=1;num>0;i++)
  14. {
  15. aux=num%10;
  16. num=num/10;
  17. numIm=numIm+aux/10;
  18. numIm=numIm*10;
  19. }
  20. omirp=0;
  21. aux2=numIm;
  22. for(int j=2;j<numIm;j++)
  23. {
  24. if(aux2%j==0)
  25. {
  26. omirp=1;
  27. }
  28. }
  29. if(omirp==0)
  30. {
  31. cout<<endl<<b<<" "<<a<<"/"<<numIm;
  32. b++;
  33. }
  34. a++;
  35. }
  36. return 0;
  37. }

El prgrama es este pero no me queda claro como funciona el primer bucle for, podria alguien ayudarme por favor. muchas gracias.

MOD: Etiqueta GeSHi


Título: Re: Duda de un programa
Publicado por: K-YreX en 3 Noviembre 2021, 21:15 pm
Yo diría que tu algoritmo no es correcto.  :silbar: :silbar:
Un número omirp es un número primo no capicúa cuyo palíndromo también es primo. Por ejemplo: 13 - 31 | 17 - 71 | ...

Al ejecutar tu programa el resultado que obtengo es:
Código:
2 1/1
3 2/2
4 3/3
5 5/5
6 7/7
7 10/1
...
Con sólo estos resultados ya podemos ver que:
  • Los números {1, 2, 3, 5 y 7} no son considerados números omirp porque son capicúa (sus palíndromos son ellos mismos).
  • El 10 no es primo (y realmente el 1 tampoco)

Es decir que de todos esos resultados no hay ninguno válido.