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!!!
CSS Flexible Box Layout, comúnmente conocido como Flexbox, es un modelo de diseño web CSS que permite que los elementos[...]
La Interfaz Grafica de Usuario en Java nos brinda la posibilidad de cambiar la apariencia de nuestras aplicaciones, ya s[...]
Crecen las startups en Bolivia: La mayoría está en Santa Cruz, Cochabamba y La Paz Según el «Mapeo del Ecosistema de Tec[...]
Código Único de Factura para el Nuevo Sistema de Facturación Electrónica en Bolivia desarrollado en el lenguaje PHP 7 (H[...]
La Ordenación de burbuja (Bubble Sort en inglés) es un sencillo algoritmo de ordenamiento. Este algoritmo es esencialmen[...]
Esta aplicacion permite escalar una imagen desde java sin perder las proporciones de la misma, utiliza SCALE_AREA_AVERAG[...]