Número narcisista en Java

Programa Java que compruebe si un número es narcisista.

Se considera que un número es narcisista si la suma de sus cifras elevadas al número de cifras que tiene el número es igual al propio número.

Por ejemplo, el número 153 es un número narcisista. El número tiene 3 cifras y si sumamos cada una de sus cifras elevada al cubo el resultado es el propio número:

13 + 53 + 33 -> 1 + 125 + 27 -> 153 

Otro ejemplo de número narcisista es el 1634

14 + 64 + 34 + 44 -> 1 + 1296 + 81 + 256 -> 1634

El programa pedirá que se introduzca por teclado un número entero positivo y determinará si es un número narcisista o no lo es.

Solución:

El primer paso para determinar si un número es narcisista es calcular el número de cifras que tiene. Los pasos a seguir para calcular el número de cifras de un número se explican en el ejercicio calcular las cifras de un número y aquí lo haremos de la misma forma. 

Una vez sepamos la cantidad de cifras que tiene el número procederemos a obtener cada una de las cifras del número, la elevaremos al número de cifras que tiene y sumaremos el resultado. Para obtener cada una de las cifras del número lo haremos de la misma forma que se explica en el ejercicio sumar las cifras de un número

/*
 * Programa Java que comprueba si un número en narcisista
 */
import java.util.Scanner;

public class NumeroNarcisista {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N, aux, cifra, numeroCifras = 0;
        double suma;

        //lectura de un número entero positivo
        do {
            System.out.print("Introduce número entero positivo: ");
            N = sc.nextInt();
            if (N <= 0) {
                System.out.println("Error. Debe ser un número positivo");
            }
        } while (N <= 0);

        //contar las cifras del número
        aux = N;
        while (aux != 0) {
            numeroCifras++;
            aux /= 10;
        }

        suma = 0; //variable que contendrá la suma de las cifras
        aux = N;
        while (aux != 0) {      //mientras le queden cifras al número
            cifra = aux % 10;   //obtenemos la última cifra
            suma = suma + Math.pow(cifra, numeroCifras); //elevamos la cifra al número de cifras y se suma        
            aux /= 10;     //quitamos al número la última cifra
        }

        if (suma == N) { //si la suma es igual al número
            System.out.println("Es narcisista");
        } else {
            System.out.println("No es narcisista");
        }
    }

}

2 comentarios: