Aprende a saber si un número es un número Armstrong en C.

En la teoría de los números, un número de Armstrong o también llamado un número narcisista, un invariante digital pluscuamperfecto y un número perfecto más es básicamente un número que es la suma de sus propios dígitos, cada uno elevado a la potencia del número de dígitos. Esta definición depende de la base b del sistema numérico utilizado, por ejemplo, b = 10 para el sistema decimal o b = 2 para el sistema binario (en base 2, los únicos números narcisistas son 0 y 1):

Armstrong Number Description

En este artículo, le mostraremos una breve explicación de cómo determinar si un número es un número Armstrong en C.

Implementación en C

En el siguiente fragmento, leeremos el número entero proporcionado por el usuario para verificar si es un número Armstrong o no. Usaremos un ciclo while para verificar si el valor de la variable numérica no es 0. Si esta condición es verdadera, usaremos el primer ciclo para determinar a qué potencia se elevaría el número dividiendo una variable que contiene la copia de el número proporcionado por el usuario hasta que sea 0 (como copyNumber se declara como entero, el valor se analizará automáticamente como int, por ejemplo, 0.15 se convierte en 0, saliendo del bucle).

La variable remaining almacenará el módulo del valor del número por 10 y raised almacenará el valor del restante elevado al powerNumber uso pow(). Finalmente, la última declaración de condición "si" se usa para verificar que tanto el valor de numberCopy como raised sea ​​igual. Si la condición es verdadera, imprimirá el número Armstrong. De lo contrario, ejecutará la declaración de condición else y no imprimirá el número Armstrong:

#include<stdio.h>
#include<math.h>

int main()
{
	int number, raised = 0, powerNumber = 0, remaining, numberCopy;
	printf("Ingrese cualquier número:");

	scanf("%d",&number);

	numberCopy = number;

	while(numberCopy != 0){
		numberCopy = numberCopy/10;
		powerNumber++;
	}

	numberCopy = number;

	while(number!=0)
	{
		remaining = number % 10;
		raised += pow(remaining, powerNumber);
		number = number/10;
	}

	if(numberCopy == raised){
		printf("El número dado es un número de Armstrong");
	}else{
		printf("El número dado no es un número de Armstrong");
        }

	return 0;
}

Si compila el código, la consola se iniciará y le pedirá un número al usuario. Puede ejecutar los siguientes ejemplos:

  • 1135: el número dado no es un número de Armstrong
  • 407: el número dado es un número de Armstrong

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