Los números narcisistas o números de Armstrong son aquellos números enteros positivos cuya suma de las n-ésimas potencias de sus dígitos son ellos mismos. Es decir:
A continuación código java que determina si un numero dado es narcisista o no:
/** * @see https://www.jc-mouse.net/ * @author mouse */ public class Main { public static void main(String[] args) { //numeros narcisistas int[] numeros_de_prueba = { 1,//Si 7,//Si 11,//No 153,//Si 267,//No 370,//Si 666,//No 1634,//Si 3071,//No 8208,//Si 27310,//No 54748//Si }; for (int numero : numeros_de_prueba) { System.out.println("> NUMERO : " + numero); System.out.println((numeroNarcisista(numero)) ? "[" + numero + "] ES UN NUMERO NARCISISTA" : "[" + numero + "] NO ES UN NUMERO NARCISISTA"); } } /** * Metodo que calcula su un numero de N digitos es o no narcisista * * @param numero variable a calcular * @return boolean TRUE: es un numero narcisista FALSE: NO es un numero * narcisista */ public static boolean numeroNarcisista(int numero) { int tmp; int resto; int total = 0; int n = 0; //cantidad de digitos tmp = numero; //Obtiene la cantidad de digitos do { tmp /= 10; n++; } while (tmp != 0); System.out.println(" Cantidad de digitos = " + n); tmp = numero; //calcula el numero de Armstrong do { resto = tmp % 10; double total_parcial = Math.pow(resto, n); System.out.printf(" [ (%d^%d) = %.0f ] ", resto,n,total_parcial); total += total_parcial; //calcula potencia N y acumula al total System.out.print(((tmp /= 10) != 0) ? "+" : " = "); } while (tmp != 0); System.out.println(total); return total == numero; } }
Ejecutando obtenemos:
run: > NUMERO : 1 Cantidad de digitos = 1 [ (1^1) = 1 ] = 1 [1] ES UN NUMERO NARCISISTA > NUMERO : 7 Cantidad de digitos = 1 [ (7^1) = 7 ] = 7 [7] ES UN NUMERO NARCISISTA > NUMERO : 11 Cantidad de digitos = 2 [ (1^2) = 1 ] + [ (1^2) = 1 ] = 2 [11] NO ES UN NUMERO NARCISISTA > NUMERO : 153 Cantidad de digitos = 3 [ (3^3) = 27 ] + [ (5^3) = 125 ] + [ (1^3) = 1 ] = 153 [153] ES UN NUMERO NARCISISTA > NUMERO : 267 Cantidad de digitos = 3 [ (7^3) = 343 ] + [ (6^3) = 216 ] + [ (2^3) = 8 ] = 567 [267] NO ES UN NUMERO NARCISISTA > NUMERO : 370 Cantidad de digitos = 3 [ (0^3) = 0 ] + [ (7^3) = 343 ] + [ (3^3) = 27 ] = 370 [370] ES UN NUMERO NARCISISTA > NUMERO : 666 Cantidad de digitos = 3 [ (6^3) = 216 ] + [ (6^3) = 216 ] + [ (6^3) = 216 ] = 648 [666] NO ES UN NUMERO NARCISISTA > NUMERO : 1634 Cantidad de digitos = 4 [ (4^4) = 256 ] + [ (3^4) = 81 ] + [ (6^4) = 1296 ] + [ (1^4) = 1 ] = 1634 [1634] ES UN NUMERO NARCISISTA > NUMERO : 3071 Cantidad de digitos = 4 [ (1^4) = 1 ] + [ (7^4) = 2401 ] + [ (0^4) = 0 ] + [ (3^4) = 81 ] = 2483 [3071] NO ES UN NUMERO NARCISISTA > NUMERO : 8208 Cantidad de digitos = 4 [ (8^4) = 4096 ] + [ (0^4) = 0 ] + [ (2^4) = 16 ] + [ (8^4) = 4096 ] = 8208 [8208] ES UN NUMERO NARCISISTA > NUMERO : 27310 Cantidad de digitos = 5 [ (0^5) = 0 ] + [ (1^5) = 1 ] + [ (3^5) = 243 ] + [ (7^5) = 16807 ] + [ (2^5) = 32 ] = 17083 [27310] NO ES UN NUMERO NARCISISTA > NUMERO : 54748 Cantidad de digitos = 5 [ (8^5) = 32768 ] + [ (4^5) = 1024 ] + [ (7^5) = 16807 ] + [ (4^5) = 1024 ] + [ (5^5) = 3125 ] = 54748 [54748] ES UN NUMERO NARCISISTA
enjoy!!!
Augusta Ada King (1815-1852) , mas conocida como condesa de Lovelace o simplemente Ada Lovelace, fue una matemática brit[...]
Como dice un viejo dicho, «La practica hace al maestro» y en el mundo de la programación no es diferente, por eso siempr[...]
Existen muchas camaras de seguridad por internet algunas protegidas por contraseña pero la mayoria no, utilizando el hac[...]
En este tutorial veremos como usar el componente Slider de JavaFX , capturas los cambios que realice el usuario y con es[...]
Cuando realizamos un proyecto java utilizando fuentes de nuestro sistema, al momento de distribuir el programa y ejecuta[...]
Microsoft acaba de lanzar Cascadia Code una fuente monoespaciada enfocada en proporcionar una mejor experiencia en conso[...]