Programa C/C++ para Armstrong Numbers

Dado un número N , la tarea es verificar si el número dado es el número de Armstrong o no. Si el número dado es el número de Armstrong, escriba «Sí» , de lo contrario, escriba «No» .

Un número entero positivo de D dígitos se denomina número de armstrong de orden D (el orden es el número de dígitos) si
N_{1}N_{2}N_{3}N_{4}... = N_{1}^{D} + N_{2}^{D} + N_{3}^{D} + N_{4}^{D}...
Donde D es el número de dígito en el número N
y N(1), N(2), N(3)… son dígito del número N.

Ejemplos:

Entrada: N = 153
Salida:
Explicación:
153 es un número de Armstrong.
1*1*1 + 5*5*5 + 3*3*3 = 153

Entrada: 120
Salida: No
Explicación:
120 no es un número de Armstrong.
1*1*1 + 2*2*2 + 0*0*0 = 9

Enfoque: La idea es contar el número de dígitos (digamos d ) en el número dado N . Para cada dígito (por ejemplo, r ) en el número dado N , encuentre el valor de rd y si la suma de todos los valores es N , imprima «Sí» , de lo contrario, imprima «No» .

A continuación se muestra la implementación del enfoque anterior:

C

// C program to find Armstrong number
#include <stdio.h>
  
// Function to calculate N raised
// to the power D
int power(int N, unsigned int D)
{
    if (D == 0)
        return 1;
  
    if (D % 2 == 0)
        return power(N, D / 2)
               * power(N, D / 2);
  
    return N * power(N, D / 2)
           * power(N, D / 2);
}
  
// Function to calculate the order of
// the number
int order(int N)
{
    int r = 0;
  
    // For each digit
    while (N) {
        r++;
        N = N / 10;
    }
    return r;
}
  
// Function to check whether the given
// number is Armstrong number or not
int isArmstrong(int N)
{
    // Calling order function
    int D = order(N);
  
    int temp = N, sum = 0;
  
    // For each digit
    while (temp) {
        int Ni = temp % 10;
        sum += power(Ni, D);
        temp = temp / 10;
    }
  
    // If satisfies Armstrong condition
    if (sum == N)
        return 1;
    else
        return 0;
}
  
// Driver Code
int main()
{
    // Given Number N
    int N = 153;
  
    // Function Call
    if (isArmstrong(N) == 1)
        printf("True\n");
    else
        printf("False\n");
    return 0;
}

C++

// C++ program to find Armstrong number
#include <bits/stdc++.h>
using namespace std;
  
// Function to calculate N raised
// to the power D
int power(int N, unsigned int D)
{
    if (D == 0)
        return 1;
  
    if (D % 2 == 0)
        return power(N, D / 2)
               * power(N, D / 2);
  
    return N * power(N, D / 2)
           * power(N, D / 2);
}
  
// Function to calculate the order of
// the number
int order(int N)
{
    int r = 0;
  
    // For each digit
    while (N) {
        r++;
        N = N / 10;
    }
    return r;
}
  
// Function to check whether the given
// number is Armstrong number or not
int isArmstrong(int N)
{
    // To find order of N
    int D = order(N);
  
    int temp = N, sum = 0;
  
    // Traverse each digit
    while (temp) {
        int Ni = temp % 10;
        sum += power(Ni, D);
        temp = temp / 10;
    }
  
    // If satisfies Armstrong condition
    if (sum == N)
        return 1;
    else
        return 0;
}
  
// Driver Code
int main()
{
    // Given Number N
    int N = 153;
  
    // Function Call
    if (isArmstrong(N) == 1)
        cout << "True";
    else
        cout << "False";
    return 0;
}
Producción:

True

Complejidad de tiempo: O(log 10 N)
Espacio auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por chaitanya3163 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *