En programación, un número fuerte es un número especial cuya suma del factorial de cada dígito es igual al número original. Por ejemplo:
!1 + !4 + !5 = 145
Y no, !
no es el operador unario de negación de la programación, esto significa un número factorial ( lea aquí cómo saber el factorial de un número en C) en matemáticas. En este artículo, le explicaremos un fragmento bastante útil en C que le permite determinar si un número es fuerte o no.
Implementación
La lógica del código para determinar si un número es fuerte puede ser complicada para los principiantes, pero una vez explicada, es bastante fácil de hacer. Nuestro código para determinar si un número es fuerte es el siguiente:
#include<stdio.h>
// Función factorial que devuelve el factorial de un entero dado
// Para más información sobre factoriales: https://ourcodeworld.com/articles/read/857/how-to-get-the-factorial-of-a-number-in-c
int fact(int n){
int i,fac=1;
for(i=1;i<=n;++i){
fac*=i;
}
return fac;
}
int main(){
int number, lastDigit, sum, count;
sum = 0;
printf("Provide the number to determine:");
scanf("%d",&number);
count = number;
while(count != 0){
// Obtain the last digit of the number
lastDigit = count % 10;
// Keep the count of the sum of the factorial of the last digit
sum += fact(lastDigit);
// Divida la cuenta para saber cuándo debe terminar el ciclo.
// e.g 145/10 = 14.5
// e.g 14.5/10 = 1.45
// e.g 1.45/10 = 0.145
// Esto significa que el ciclo de 145 se repetirá 3 veces (porque 0.145/10 = 0.014499999999999999).
count = count / 10;
}
// Si la suma es igual al número dado, ¡es fuerte!
if(sum == number){
printf("El numero es fuerte");
}else{
printf("El número NO es fuerte");
}
return 0;
}
El código funciona así: nuestro programa pedirá a nuestro usuario un número entero que se almacenará en la variable number
. Ahora, para fines de cálculo, asigne el valor del número a otra variable que nombramos count
. También definimos una variable denominada suma que contendrá la sum
del factorial de todos los dígitos del número dado, esta variable tendrá como valor inicial 0.
Para encontrar el último dígito de un número matemáticamente, puede hacerlo a través del operador de módulo y el resto del número procesado será el último dígito, almacenaremos este valor en la variable lastDigit
. Ahora crearemos un ciclo que hará 2 cosas hasta que la variable de conteo sea igual a 0:
- Encuentra el factorial del último dígito y súmalo a la suma.
- Quite el último dígito del número que no necesitamos (
count
valor de actualización)
Finalmente, una vez que termine el ciclo, podrás comparar si el número es fuerte o no, comparando la sum
variable con el número dado al comienzo de nuestro código, ¡y listo!
Que te diviertas ❤️!
Conviertete en un programador más sociable