For working professionals
For fresh graduates
More
Explore C Tutorials: From Begi…
1. Introduction to C Tutorial
2. Addition of Two Numbers in C
3. Anagram Program in C
4. Armstrong Number in C
Now Reading
5. Array in C
6. Array of Pointers in C
7. Array of Structure in C
8. C Program to Find ASCII Value of a Character
9. Assignment Operator in C
10. Binary Search in C
11. Binary to Decimal in C
12. Bitwise Operators in C
13. Boolean in C
14. C Compiler for Mac
15. C Compiler for Windows
16. C Function Call Stack
17. C Language Download
18. Operators in C
19. C/C++ Preprocessors
20. C Program for Bubble Sort
21. C Program for Factorial
22. C Program for Prime Numbers
23. C Program for String Palindrome
24. C Program to Reverse a Number
25. Reverse a String in C
26. C string declaration
27. String Input Output Functions in C
28. Calculator Program in C
29. Call by Value and Call by Reference in C
30. Ceil Function in C
31. Coding Vs. Programming
32. Command Line Arguments in C/C++
33. Comments in C
34. Compilation process in C
35. Conditional Statements in C
36. Conditional operator in the C
37. Constant Pointer in C
38. Constants in C
39. Dangling Pointer in C
40. Data Structures in C
41. Data Types in C
42. Debugging C Program
43. Convert Decimal to Binary in C
44. Define And include in C
45. Difference Between Arguments And Parameters
46. Difference Between Compiler and Interpreter
47. Difference Between If Else and Switch
48. Do While Loop In C
49. Double In C
50. Dynamic Array in C
51. Dynamic Memory Allocation in C
52. Enumeration (or enum) in C
53. Evaluation of Arithmetic Expression
54. Factorial of A Number in C
55. Features of C Language
56. Fibonacci Series Program in C Using Recursion
57. File Handling in C
58. For Loop in C
59. Format Specifiers in C
60. Functions in C
61. Function Pointer in C
62. goto statement in C
63. C Hello World Program
64. Header Files in C
65. Heap Sort in C Program
66. Hello World Program in C
67. History of C Language
68. How to compile a C program in Linux
69. How to Find a Leap Year Using C Programming
70. Identifiers in C
71. If Else Statement in C
72. If Statement in C
73. Implementation of Queue Using Linked List
74. Increment and decrement operators in c
75. Input and Output Functions in C
76. How To Install C Language In Mac
77. Jump Statements in C
78. Lcm of Two Numbers in C
79. Length of an Array in C
80. Library Function in C
81. Linked list in C
82. Logical Operators in C
83. Macros in C
84. Matrix multiplication in C
85. Nested if else statement in C
86. Nested Loop in C
87. One Dimensional Array in C
88. Operator Precedence and Associativity in C
89. Overflow And Underflow in C
90. Palindrome Program in C
91. Pattern Programs in C
92. Pointer to Pointer in C
93. Pointers in C: A Comprehensive Tutorial
94. Pre-increment And Post-increment
95. Prime Number Program in C
96. Program for Linear Search in C
97. Pseudo-Code In C
98. Random Access Files in C
99. Random Number Generator in C
100. Recursion in C
101. Relational Operators in C
102. Simple interest program in C
103. Square Root in C
104. Stack in C
105. Stack Using Linked List in C
106. Static function in C
107. Stdio.h in C
108. Storage Classes in C
109. strcat() in C
110. Strcmp in C
111. Strcpy in C
112. String Comparison in C
113. String Functions in C
114. String Length in C
115. String Pointer in C
116. strlen() in C
117. Structures in C
118. Structure of C Program
119. Switch Case in C
120. C Ternary Operator
121. Tokens in C
122. Toupper Function in C
123. Transpose of a Matrix in C
124. Two Dimensional Array in C
125. Type Casting in C
126. Types of Error in C
127. Unary Operator in C
128. Use of C Language
129. User Defined Functions in C
130. What is Variables in C
131. Is C language case sensitive
132. Fibonacci Series in C
Armstrong Number in C refers to a number which is equal to the total sum of its individual digits, with each digit raised to the power of the total number of digits. In other words, a number can be termed an Armstrong number if the total sum of its comprising digits raised to the power of the number of digits returns the number.
Examples of three-digit Armstrong numbers are 0, 1, 153, 370, 371, and 407.
Examples of four-digit Armstrong numbers are 1634, 8208, and 9474.
When considering a three-digit number, you can determine whether a number is an Armstrong number or not by calculating the sum of the cubes of its individual digits. If the sum returns the same as the original number, it is called an Armstrong number.
Suppose the Armstrong number is a positive integer of order n then it is defined as,
x1x2x3x4…. = pow (x1, n) + pow (x2, n) + pow (x3, n) + pow (x4, n) + ………
Let’s take an example to understand Armstrong number in C:
Suppose the given number is 153. It is a three-digit number so the length of power is 3. To check whether it is an Armstrong number or not, we will add the cubes of individual digits.
13 = (1*1*1)=1
53 = (5*5*5)=125
33 = (3*3*3)=27
So:
1+125+27=153
153 = (1*1*1)+(5*5*5)+(3*3*3)
Hence, 153 is an Armstrong number.
Step-1: Take an integer number as input from the user (num)
Step-2: Initialise sum = 0
Step-3: Store the user input in a temporary variable (var = num)
Step-4: Calculate the total number of digits in the input number
Step-5: Repeat steps 6 to 8 until var > 0
Step-6: Calculate the rightmost digit using the modulo operator (operating_digit = var % 10)
Step-7: Add the cube of the operating_digit to the sum (sum = sum + operating_digit * operating_digit * operating_digit)
Step-8: Divide the number by 10 to remove the rightmost digit (var = var / 10)
Step-9: If sum == num, print “Entered number is an Armstrong Number.” Else print “Entered number is not an Armstrong Number.”
Step-10: End
In the first step of the above algorithm, a number is accepted as an input. Its value is stored in a temporary variable, and the sum is initialised to 0. The next step calculates the total number of digits in the given number. The remainder of the entered number is stored in the ‘operating digit’ variable. Its value is added to the ‘num’ (entered number). Note that the variable operating_digit is multiplied thrice since we are looking for a three-digit Armstrong Number in C.
In the next step, the input number is divided by 10. To check the Armstrong number in C using for loop, step 6 to 8 iterate until the ‘var’ >0. For the Armstrong number check, the next step compares the sum to the input number. If both are equal, the output displays that the entered number is an Armstrong Number.
Let’s consider the below example program to check whether an input three-digit number is an Armstrong Number in C or not.
#include <stdio.h> |
Output
Please enter a three-digit number: 153 |
In the above program, we have checked for the Armstrong number in C using function, i.e. isArmstrong() function. It is used for three-digit numbers in our example. The above program prompts the user to enter a three-digit number and then calls the isArmstrong() function. Finally, it prints the message according to the result.
The algorithm can be analysed in terms of time complexity and space complexity.
Time Complexity:
The time complexity of the above program that checks Armstrong number for a 3-digit code is O(log(n)). Here n is the input number to the isArmstrong function. The reason is that the while loop logarithmically runs according to the number of digits within n.
Space Complexity:
The space complexity of the algorithm is O(1), which means it requires constant additional memory. The memory usage does not depend on the size of the input number.
Step-1: Take an integer number as input from the user (num)
Step-2: Initialise sum = 0, and num = number.
Step-3: Calculate the total number of digits in the input number. Store its value in the variable total_of_digits.
Step-4: Repeat steps 5 to 7 till num > 0
Step-5: operating_digit = (num % 10)
Step-6: sum = sum + pow(operating_digit,total_of_digits)
Step-7: num = num / 10
Step-8: If sum == num then print “Entered number is an Armstrong Number.” Else print “Entered number is not an Armstrong Number.”
Firstly, an input number is accepted by the user. The second step initialises the ‘sum’ variable to 0 and stores the input number in the ‘num’ variable. The third step calculates the sum of the number of digits in the input and stores its value in the ‘total_of_digits’ variable. Steps 5 to 7 iterate till num > 0.
The fifth step stores the remainder of the input into the ‘operating_digit’ variable. In the sixth step, the value of total_of_digits is raised to the operating_digit to calculate the power. Its value is added to the ‘sum’ variable. The seventh step divides the input number by 10 and stores the value in the ‘num’ variable. The eighth step compares sum and num variables. If both are equal, the output shows that the entered number is an Armstrong number.
We can check Armstrong numbers in C for N-digit numbers using a similar approach as for 3-digit numbers. The program structure is modified to accommodate the variable number of digits. With the use of function, the code for Armstrong number becomes more readable and easy to debug.
Here’s an example program to check whether an input N-digit number is an Armstrong Number in C or not.
#include <stdio.h> |
The above program emphasises on the Armstrong number in C using function because it uses isArmstrong() function that calculates the number of digits in your input number. It calculates the sum of powers of individual digits and checks whether it matches the original number (i.e. yourNum in our example). The main() function prompts the user to enter a number and calls the isArmstrong() function. Lastly, it displays the output.
Here’s the output you get when you run the above program and enter an N-digit number.
Output
Please enter a number: 123 |
You can analyse the above algorithm in the context of time complexity and space complexity.
Time Complexity:
Time complexity is O(X) because the algorithm processes individual digits of the number. Here X = log10(N); N is the number to be checked for an Armstrong number.
Space Complexity:
The space complexity of the algorithm is O(1) because it does not require any additional space that grows with the input size.
In conclusion, the concept of Armstrong numbers in C provides a fascinating way to explore the properties of numbers. By understanding the algorithm and implementing it in code, we can determine whether a given number is an Armstrong number or not. The program structure can be modified to handle both 3-digit and N-digit numbers, making it versatile and adaptable. The use of functions enhances code readability and simplifies the debugging process.
While getting familiar with the basics of Armstrong number in C, check out upGrad’s Full Stack Software Development Bootcamp, which will fuel your career advancement in the tech industry. Covering demanding topics taught by industry experts, upGrad helps you to escalate your growth in STEM!
Enroll now to begin your journey!
1. What is the significance of the Armstrong number?
Armstrong number is widely used for encryption and decryption to improve the strength of the algorithm. An Armstrong number’s length can be increased if higher security is demanded.
2. Is 123 an Armstrong number?
No, 123 is not an Armstrong number because 13 + 23 + 33 = 36, which is not equal to the number 123.
3. Is an Armstrong number an N digit?
An Armstrong number is an n-digit number because it equates to the total of the nth power of each of its digits. For example, 407 is an Armstrong number because N = 3 (number of digits), so 43 + 03 + 73 = 64 + 0 + 343 = 407 itself.
4. Can an Armstrong number be negative?
No, because an Armstrong number is a digit which is the total of its digits raised to the third power equals the number itself. Since the number is equated with summation (which can never be negative), an Armstrong number can’t be negative. It will return false for negative numbers.
Take a Free C Programming Quiz
Answer quick questions and assess your C programming knowledge
Author
Start Learning For Free
Explore Our Free Software Tutorials and Elevate your Career.
Talk to our experts. We are available 7 days a week, 9 AM to 12 AM (midnight)
Indian Nationals
1800 210 2020
Foreign Nationals
+918045604032
1.The above statistics depend on various factors and individual results may vary. Past performance is no guarantee of future results.
2.The student assumes full responsibility for all expenses associated with visas, travel, & related costs. upGrad does not provide any a.