Introducción

Ya he implementado este algoritmo en otros lenguajes de programación (los más populares creo yo). Llegó el turno de PHP. Veamos una función para determinar si un número es narcisista.

Número narcisista en PHP

Si no sabes qué es un número narcisista, lee: Algoritmo para número narcisista en múltiples lenguajes de programación.

Función: es número narcisista

Para terminar pronto, puse todo en una función. Recomiendo leer:

Arreglos en PHP

El código fuente es este:

<?php
function esNarcisista($numero){
    $numeroComoCadena = strval($numero);
    $longitudDelNumero = strlen($numeroComoCadena);

    $suma = 0;
    for($indice = 0; $indice < $longitudDelNumero; $indice++){
        // Convertir carácter a entero
        $caracterActual = $numeroComoCadena[$indice];
        $cifraComoEntero = intval($caracterActual);

        // Elevar ese carácter a la potencia dada por la longitud del número
        $elevado = pow($cifraComoEntero, $longitudDelNumero);

        // El resultado lo añadimos a $suma
        $suma = $suma + $elevado;
    }
    // Comprobar si la suma al elevar es igual al número que recibimos
    if($suma === $numero) return true;
    else return false;
}

De nuevo el tipado débil nos ayuda.

Para realizar conversiones usamos simplemente intval y strval. Eso sí, para elevar un número usamos la función nativa llamada pow.

Cómo usar el código

Es una función, por lo tanto podemos llamarla por valor como lo hacemos con otras funciones.

Aquí dejo la implementación que yo le di, en donde básicamente recorremos un arreglo de números enteros y comprobamos si cada número es o no narcisista.

Narcisista en PHP

Click aquí si quieres saber cómo ejecutar código PHP desde la terminal.

Si el post ha sido de tu agrado te invito a que me sigas para saber cuando haya escrito un nuevo post, haya actualizado algún sistema o publicado un nuevo software. Facebook | X | Instagram | Telegram | También estoy a tus órdenes para cualquier contratación en mi página de contacto