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 <iostream>
#include <cstdlib> /* atoi */
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);
}
int order( int x)
{
int n = 0;
while (x) {
n++;
x = x / 10;
}
return n;
}
int isArmstrong( int x)
{
int n = order(x);
int temp = x, sum = 0;
while (temp) {
int r = temp % 10;
sum += power(r, n);
temp = temp / 10;
}
if (sum == x)
return 1;
else
return 0;
}
int main( int argc, char * argv[])
{ int num, res = 0;
if (argc == 1)
std::cout << "No command line arguments found." << std::endl;
else {
num = atoi (argv[1]);
res = isArmstrong(num);
if (res == 0)
std::cout << "No" << std::endl;
else
std::cout << "Yes" << std::endl;
}
return 0;
}
|
C
#include <stdio.h>
#include <stdlib.h> /* atoi */
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);
}
int order( int x)
{
int n = 0;
while (x) {
n++;
x = x / 10;
}
return n;
}
int isArmstrong( int x)
{
int n = order(x);
int temp = x, sum = 0;
while (temp) {
int r = temp % 10;
sum += power(r, n);
temp = temp / 10;
}
if (sum == x)
return 1;
else
return 0;
}
int main( int argc, char * argv[])
{
int num, res = 0;
if (argc == 1)
printf ( "No command line arguments found.\n" );
else {
num = atoi (argv[1]);
res = isArmstrong(num);
if (res == 0)
printf ( "No\n" );
else
printf ( "Yes\n" );
}
return 0;
}
|
Java
class GFG {
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 );
}
public static int order( int x)
{
int n = 0 ;
while (x != 0 ) {
n++;
x = x / 10 ;
}
return n;
}
public static int isArmstrong( int x)
{
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 (sum == x)
return 1 ;
else
return 0 ;
}
public static void main(String[] args)
{
if (args.length > 0 ) {
int num = Integer.parseInt(args[ 0 ]);
int res = isArmstrong(num);
if (res == 0 )
System.out.println( "No\n" );
else
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)