Calcular los numeros emirp en JAVA

Un emirp es un número primo que al invertir sus dígitos obtienes un número primo diferente. Este tipo de números primos excluye los denominados primos palíndromos, ya que un número palíndromo invertido es el mismo número (el 101 es un primo palíndromo pero no es un emirp).


Teniendo claro la definición, reutilizando el código de las entradas anteriores Los numeros Primos en JAVA e Invertir numero entero en JAVA y teniendo en cuenta que tanto los números primos que son iguales normales e invertidos (palíndromos) como los primos de un dígito NO son emirp, podemos hacer este programa fácilmente.
public class Emirp {  
    public static void main(String[] args) {
        int desde = 1;
        int hasta = 1000;
        for(int i = desde; i <= hasta; i++) {
            if(i != invNum(i) && esPrimo(i) && esPrimo(invNum(i))) {
                System.out.println(i);
            }
        }
    }
    //Invierte los digitos de un numero
    public static int invNum(int n) {
        int nDigitos = Integer.toString(n).length();
        int nInv = 0;

        if (nDigitos == 1) {
            return n;
        } else {
            for (int i = 0; i < nDigitos; i++) {
                if (i == 0) {
                    nInv += (n % 10) * Math.round(Math.pow(10, (nDigitos - 1)));
                } else if (i == nDigitos - 1) {
                    nInv += n / Math.round(Math.pow(10, (nDigitos - 1)));
                } else {
                    nInv += (n / Math.round(Math.pow(10, i))) % 10 
                             * Math.round(Math.pow(10, (nDigitos - 1 - i)));
                }
            }
        }

        if (nInv < 0) {
            return nInv / 10;
        } else {
            return nInv;
        }
    }
    //Comprueba si un numero es o no primo
    public static boolean esPrimo(int n) {
        for (int i = 2; i <= Math.sqrt(n); i++) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }
}

Comentarios

Entradas populares de este blog

Ordenar cualquier array con SORT en JAVA

Modificadores de acceso (public, protected y private) JAVA

Calcular factorial de un numero en JAVA