Программа для номеров Армстронга
Опубликовано: 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 notbool 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 Programint 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 notint 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 Programint 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 notpublic 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 ydef 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 numberdef 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 notdef 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 Programx = 153print(isArmstrong(x))x = 1253print(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 numberprint(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 notusing 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 Numberint 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 Functionint main(){ int n = 12; cout<<NthArmstrong(n); return 0;} // This Code is Contributed by "jaingyayak" |
Java
// Java Program to find // Nth Armstrong Numberimport java.lang.Math; class GFG{ // Function to find Nth Armstrong Numberstatic int NthArmstrong(int n){ int count = 0; // upper limit from integer for(int i = 1
|