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 http://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!!!
Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.
Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye
Enjoy! :)
SQLite. SQLite es un sistema de gestión de bases de datos relacional compatible con ACID, contenida en una relativamente...
Sketch2Code es un proyecto de Microsoft el cual usa IA (Inteligencia Artificial) para transformar el diseño de una inter...
Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la inter...
The Age of AI o «La era de la Inteligencia Artificial», es una serie de 8 documentales de Youtube Original, presentados...
En esta oportunidad dejo a consideracion un proyecto para la captura de video desde una webcam, utilizando filtros como...
JTable es un componente swing java que nos permite mostrar datos en una tabla de una base de datos, sin embargo a difere...
Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...
Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...
En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...
Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...