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!!!
Cada día aparecen cientos sino es que miles de nuevos sitios web en el mundo, pero son muy pocos las webs verdaderamente[...]
En este post crearemos un componente gráfico para java que nos permitirá seleccionar la hora del día de una manera senci[...]
En este post vamos a crear una aplicación sencilla para conectar C# con MySQL. Manos a la obra 🙂 Necesitamos – Con[...]
En tutoriales pasados creábamos demasiadas líneas de código en el mismo lugar para dibujar en la pantalla, cosa que nos[...]
Project Lombok es una biblioteca para java que se conecta con su IDE (Integrated Development Environment – Entorno[...]
En este tutorial veremos como usar el componente Slider de JavaFX , capturas los cambios que realice el usuario y con es[...]