Программа для номеров Армстронга

Опубликовано: 20 Января, 2022

Учитывая число x, определите, является ли данное число числом Армстронга или нет. Положительное целое число из n цифр называется числом Армстронга порядка n (порядок - это количество цифр), если.

abcd ... = pow (a, n) + pow (b, n) + pow (c, n) + pow (d, n) + ....

Пример:

Ввод: 153
Выход: Да
153 - это число Армстронга.
1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3 = 153

Ввод: 120
Выход: Нет
120 - это не число Армстронга.
1 * 1 * 1 + 2 * 2 * 2 + 0 * 0 * 0 = 9

Ввод: 1253
Выход: Нет
1253 не является числом Армстронга
1 * 1 * 1 * 1 + 2 * 2 * 2 * 2 + 5 * 5 * 5 * 5 + 3 * 3 * 3 * 3 = 723

Ввод: 1634
Выход: Да
1 * 1 * 1 * 1 + 6 * 6 * 6 * 6 + 3 * 3 * 3 * 3 + 4 * 4 * 4 * 4 = 1634

Рекомендуется: сначала решите эту проблему на «ПРАКТИКЕ», прежде чем переходить к решению.

The idea is to first count number digits (or find order). Let the number of digits be n. For every digit r in input number x, compute rn. If sum of all such values is equal to n, then return true, else false.

C++

// C++ program to determine whether the number is
// Armstrong number or not
#include<bits/stdc++.h>
using namespace std;
  
/* Function to calculate x raised to the power y */
int power(int x, unsigned int y)
{
    if( y == 0)
        return 1;
    if (y%2 == 0)
        return power(x, y/2)*power(x, y/2);
    return x*power(x, y/2)*power(x, y/2);
}
  
/* Function to calculate order of the number */
int order(int x)
{
    int n = 0;
    while (x)
    {
        n++;
        x = x/10;
    }
    return n;
}
  
// Function to check whether the given number is
// Armstrong number or not
bool isArmstrong(int x)
{
    // Calling order function
    int n = order(x);
    int temp = x, sum = 0;
    while (temp)
    {
        int r = temp%10;
        sum += power(r, n);
        temp = temp/10;
    }
  
    // If satisfies Armstrong condition
    return (sum == x);
}
  
// Driver Program
int main()
{
    int x = 153;
    cout << isArmstrong(x) << endl;
    x = 1253;
    cout << isArmstrong(x) << endl;
    return 0;
}

C

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

Java

// Java program to determine whether the number is
// Armstrong number or not
public class Armstrong
{
    /* Function to calculate x raised to the
       power y */
    int power(int x, long y)
    {
        if( y == 0)
            return 1;
        if (y%2 == 0)
            return power(x, y/2)*power(x, y/2);
        return x*power(x, y/2)*power(x, y/2);
    }
  
    /* Function to calculate order of the number */
    int order(int x)
    {
        int n = 0;
        while (x != 0)
        {
            n++;
            x = x/10;
        }
        return n;
    }
  
    // Function to check whether the given number is
    // Armstrong number or not
    boolean isArmstrong (int x)
    {
        // Calling order function
        int n = order(x);
        int temp=x, sum=0;
        while (temp!=0)
        {
            int r = temp%10;
            sum = sum + power(r,n);
            temp = temp/10;
        }
  
        // If satisfies Armstrong condition
        return (sum == x);
    }
  
    // Driver Program
    public static void main(String[] args)
    {
        Armstrong ob = new Armstrong();
        int x = 153;
        System.out.println(ob.isArmstrong(x));
        x = 1253;
        System.out.println(ob.isArmstrong(x));
    }
}

Python

# Python program to determine whether the number is
# Armstrong number or not
  
# Function to calculate x raised to the power y
def power(x, y):
    if y==0:
        return 1
    if y%2==0:
        return power(x, y/2)*power(x, y/2)
    return x*power(x, y/2)*power(x, y/2)
  
# Function to calculate order of the number
def order(x):
  
    # variable to store of the number
    n = 0
    while (x!=0):
        n = n+1
        x = x/10
    return n
  
# Function to check whether the given number is
# Armstrong number or not
def isArmstrong (x):
    n = order(x)
    temp = x
    sum1 = 0
    while (temp!=0):
        r = temp%10
        sum1 = sum1 + power(r, n)
        temp = temp/10
  
    # If condition satisfies
    return (sum1 == x)
  
  
# Driver Program
x = 153
print(isArmstrong(x))
x = 1253
print(isArmstrong(x))

Output:

1
0

Python3

# python3 >= 3.6 for typehint support 
# This example avoids the complexity of ordering
# through type conversions & string manipulation 
  
def isArmstrong(val:int) -> bool:
      
    """val will be tested to see if its an Armstrong number. 
    Arguments:
        val {int} -- positive integer only. 
    Returns:
        bool -- true is /false isn"t
    """
      
    # break the int into its respective digits
    parts = [int(_) for _ in str(val)] 
      
    # begin test.
    counter = 0
    for _ in parts:
        counter += _**3
    return ( counter == val ) 
  
# Check Armstrong number
print(isArmstrong(100))
  
print(isArmstrong(153))
  
# Get all the Armstrong number in range(1000)
print([ _ for _ in range(1000) if isArmstrong(_)])

C#

// C# program to determine whether the 
// number is Armstrong number or not
using System;
  
public class GFG
{
      
    // Function to calculate x raised
    // to the power y
    int power(int x, long y)
    {
        if( y == 0)
            return 1;
        if (y % 2 == 0)
            return power(x, y / 2) * 
                   power(x, y / 2);
                     
        return x * power(x, y / 2) *
                   power(x, y / 2);
    }
  
    // Function to calculate 
    // order of the number
    int order(int x)
    {
        int n = 0;
        while (x != 0)
        {
            n++;
            x = x / 10;
        }
        return n;
    }
  
    // Function to check whether the 
    // given number is Armstrong number
    // or not
    bool isArmstrong (int x)
    {
          
        // Calling order function
        int n = order(x);
        int temp = x, sum = 0;
        while (temp != 0)
        {
            int r = temp % 10;
            sum = sum + power(r, n);
            temp = temp / 10;
        }
  
        // If satisfies Armstrong condition
        return (sum == x);
    }
  
    // Driver Code
    public static void Main()
    {
        GFG ob = new GFG();
        int x = 153;
        Console.WriteLine(ob.isArmstrong(x));
        x = 1253;
        Console.WriteLine(ob.isArmstrong(x));
    }
}
  
// This code is contributed by Nitin Mittal.


Output:
True
False

Find nth Armstrong number

Input  : 9
Output : 9

Input  : 10
Output : 153

C++

// C++ Program to find 
// Nth Armstrong Number
#include<bits/stdc++.h>
#include<math.h>
using namespace std;
  
// Function to find Nth Armstrong Number
int NthArmstrong(int n)
{
    int count=0;
      
    // upper limit from integer 
    for(int i = 1; i <= INT_MAX; i++)
    {
        int num=i, rem, digit=0, sum=0;
          
        //Copy the value for num in num 
        num = i;
          
        // Find total digits in num 
        digit = (int) log10(num) + 1;
          
        // Calculate sum of power of digits 
        while(num > 0)
        
            rem = num % 10;
            sum = sum + pow(rem,digit);
            num = num / 10;
        }
        // Check for Armstrong number 
        if(i == sum)
            count++;
        if(count==n)
            return i;
    }
}
  
// Driver Function
int main()
{
    int n = 12;
    cout<<NthArmstrong(n);
    return 0;
}
  
  
// This Code is Contributed by "jaingyayak"

Java

// Java Program to find 
// Nth Armstrong Number
import java.lang.Math;
  
class GFG
{
      
// Function to find Nth Armstrong Number
static int NthArmstrong(int n)
{
    int count = 0;
      
    // upper limit from integer