GeeksforGeeks App
Open App
Browser
Continue

# TCS Coding Practice Question | Check Armstrong Number

Given a number, the task is to check if this number is Armstrong or not using Command Line Arguments. A positive integer of n digits is called an Armstrong number of order n (order is the number of digits) if.

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

Example:

```Input: 153
Output: Yes
153 is an Armstrong number.
1*1*1 + 5*5*5 + 3*3*3 = 153

Input: 120
Output: No
120 is not a Armstrong number.
1*1*1 + 2*2*2 + 0*0*0 = 9

Input: 1253
Output: No
1253 is not a Armstrong Number
1*1*1*1 + 2*2*2*2 + 5*5*5*5 + 3*3*3*3 = 723

Input: 1634
Output: Yes
1*1*1*1 + 6*6*6*6 + 3*3*3*3 + 4*4*4*4 = 1634```

Approach:

• Since the number is entered as Command line Argument, there is no need for a dedicated input line
• Extract the input number from the command line argument
• This extracted number will be in string type.
• Convert this number into integer type and store it in a variable, say num
• Count the number of digits (or find the order) of the number num and store it in a variable, say n.
• For every digit r in input number num, compute rn.
• If the sum of all such values is equal to num
• If they are not same, the number is not Armstrong
• If they are the same, the number is an Armstrong Number.

Program:

## C++

 `#include ``#include /* atoi */` `// 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 code``int` `main(``int` `argc, ``char``* argv[])``{``int` `num, res = 0;` ` ``// Check if the length of args array is 1`` ``if` `(argc == 1)``   ``std::cout << ``"No command line arguments found."` `<< std::endl;` ` ``else` `{` `   ``// Get the command line argument and``   ``// Convert it from string type to integer type``   ``// using function "atoi( argument)"``   ``num = ``atoi``(argv[1]);` `   ``// Check if it is Armstrong``   ``res = isArmstrong(num);` `   ``// Check if res is 0 or 1``   ``if` `(res == 0)``     ``// Print No``     ``std::cout << ``"No"` `<< std::endl;``   ``else``     ``// Print Yes``     ``std::cout << ``"Yes"` `<< std::endl;`` ``}`` ``return` `0;``}`

## C

 `// C program to check if a number is Armstrong``// using command line arguments` `#include ``#include /* atoi */` `// 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 code``int` `main(``int` `argc, ``char``* argv[])``{` `    ``int` `num, res = 0;` `    ``// Check if the length of args array is 1``    ``if` `(argc == 1)``        ``printf``(``"No command line arguments found.\n"``);` `    ``else` `{` `        ``// Get the command line argument and``        ``// Convert it from string type to integer type``        ``// using function "atoi( argument)"``        ``num = ``atoi``(argv[1]);` `        ``// Check if it is Armstrong``        ``res = isArmstrong(num);` `        ``// Check if res is 0 or 1``        ``if` `(res == 0)``            ``// Print No``            ``printf``(``"No\n"``);``        ``else``            ``// Print Yes``            ``printf``(``"Yes\n"``);``    ``}``    ``return` `0;``}`

## Java

 `// Java program to check if a number is Armstrong``// using command line arguments` `class` `GFG {` `    ``// Function to calculate x``    ``// raised to the power y``    ``public` `static` `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``    ``public` `static` `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``    ``public` `static` `int` `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``        ``if` `(sum == x)``            ``return` `1``;``        ``else``            ``return` `0``;``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{` `        ``// Check if length of args array is``        ``// greater than 0``        ``if` `(args.length > ``0``) {` `            ``// Get the command line argument and``            ``// Convert it from string type to integer type``            ``int` `num = Integer.parseInt(args[``0``]);` `            ``// Get the command line argument``            ``// and check if it is Armstrong``            ``int` `res = isArmstrong(num);` `            ``// Check if res is 0 or 1``            ``if` `(res == ``0``)``                ``// Print No``                ``System.out.println(``"No\n"``);``            ``else``                ``// Print Yes``                ``System.out.println(``"Yes\n"``);``        ``}``        ``else``            ``System.out.println(``"No command line "``                               ``+ ``"arguments found."``);``    ``}``}`

Output:

• In C:
• In Java:

Time Complexity: O (log N)
Auxiliary Space: O (1)

My Personal Notes arrow_drop_up