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!!!
Google Bard la inteligencia artificial de Google se actualiza con una mejora que entra a competir con el resto de IAs y[...]
Googleando me encontré con una interesante clase java «JpegImagesToMovie» que convierte imágenes JPEG a vídeo MOV de[...]
Slim es un micro framework para PHP que nos ayuda a escribir rápidamente aplicaciones Web y APIs sencillas pero poderosa[...]
El índice TIOBE (TIOBE, The Importance of Being Earnest – «La importancia de ser honesto» – referencia a la[...]
Segunda parte del tutorial [Crea tu blog con el patrón MVC y php]. En esta 2da parte toca ver lo que es la creación del[...]
Para terminar el tutorial, debemos unir tanto la VISTA como el MODELO y para eso esta el CONTROLADOR. o.O El controlador[...]