Duda de un programa

Iniciado por Pentix05, 1 Noviembre 2021, 20:53 PM

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

Pentix05

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 (cpp) [Seleccionar]
#include<iostream>
using namespace std;
int main()
{
int num, omirp, aux2, a, b;
double aux, numIm;
a=1;
b=2;
while(b<=100)
{
num=a;
numIm=0;
for(int i=1;num>0;i++)
{
aux=num%10;
num=num/10;
numIm=numIm+aux/10;
numIm=numIm*10;
}
omirp=0;
aux2=numIm;
for(int j=2;j<numIm;j++)
{
if(aux2%j==0)
{
omirp=1;
}
}
if(omirp==0)
{
cout<<endl<<b<<" "<<a<<"/"<<numIm;
b++;
}
a++;
}
return 0;
}


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

K-YreX

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:

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.
Código (cpp) [Seleccionar]

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