Программа для номеров Армстронга
Опубликовано: 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 for ( int i = 1
|