Aprende a verificar si un número es fuerte con C.

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 sumdel 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:

  1. Encuentra el factorial del último dígito y súmalo a la suma.
  2. 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 sumvariable con el número dado al comienzo de nuestro código, ¡y listo!

Que te diviertas ❤️!


Interesado en la programación desde los 14 años, Carlos es un programador autodidacta, fundador y autor de la mayoría de los artículos de Our Code World.

Conviertete en un programador más sociable

Patrocinadores