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.
#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
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.