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 */ // 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 <stdio.h> #include <stdlib.h> /* 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:
Time Complexity: O (log N)
Auxiliary Space: O (1)