#1 India's Top IT Training Institute

×

About Uncodemy

Know more about who we are and what we stand for.

About Us

About Us

Discover our mission to equip individuals with essential IT skills and industry expertise.

Read More →
UnCodeMy Gallery

UnCodeMy Gallery

Explore highlights from our IT training sessions and success stories.

Read More →
×

Free Resources

Learn, practice and plan your career — bilkul free.

Tutorials

Tutorials

Step-by-step written tutorials to learn any technology at your own pace.

Read More →
Free Counselling

Free Counselling

Book a free video counselling session and pick the right course for you.

Read More →
Online Compiler

Online Compiler

Write, run and test your code online — no setup required.

Read More →

Armstrong Number क्या है? Definition, Formula और C Program (हिंदी में)

संक्षिप्त जवाब: Armstrong number वह number है जिसके हर digit को कुल digits की संख्या की power पर raise करके जोड़ने पर वही number वापस मिल जाता है। जैसे 153 में 3 digits हैं, और 1³ + 5³ + 3³ = 1 + 125 + 27 = 153, इसलिए 153 एक Armstrong number है। इसे narcissistic number भी कहते हैं।

अगर आप C programming सीख रहे हैं, तो Armstrong Number का नाम आपने ज़रूर सुना होगा। नाम सुनने में थोड़ा भारी लगता है, लेकिन concept बहुत आसान है। और सबसे अच्छी बात ये है कि यह एक problem आपको C के तीन सबसे ज़रूरी basics एक साथ सिखा देता है: logic building, loops और conditions।

लेखक: Syed · Category: C Programming · पढ़ने का समय: 12 मिनट

3-digit Armstrong numbers
153, 370, 371, 407
153 का calculation
1³ + 5³ + 3³ = 153
एक number check करने की time complexity
O(d)
Base 10 में कुल Armstrong numbers
88

इस लेख में आप सीखेंगे

क्या?Armstrong number की definition और formula
153153, 371 और 9474 का step-by-step calculation
C Program3-digit और generalized C program (output के साथ)
Mistakespow() की hidden problem और उसका सही solution

साथ ही: 1 से 1000 (या किसी भी range) तक Armstrong numbers print करने का program, time complexity, common mistakes और FAQs।

Armstrong Number क्या है?

Armstrong Number (जिसे narcissistic number या pluperfect digital invariant भी कहते हैं) वह number है जो अपने हर digit को कुल digits की संख्या की power पर raise करके जोड़ने पर खुद के बराबर आता है।

आसान भाषा में: पहले गिनो कि number में कितने digits हैं (मान लो n)। फिर हर digit की n-th power निकालो और सबको जोड़ दो। अगर जोड़ (sum) original number के बराबर है, तो वह Armstrong number है।

Armstrong Number का Formula

अगर किसी n-digit number के digits a, b, c, d ... हैं, तो वह Armstrong number तब होगा जब:

abcd... = aⁿ + bⁿ + cⁿ + dⁿ + ...

Armstrong Number के Examples

  • 153 = 1³ + 5³ + 3³ = 1 + 125 + 27 = 153 → Armstrong number ✔
  • 371 = 3³ + 7³ + 1³ = 27 + 343 + 1 = 371 → Armstrong number ✔
  • 9474 = 9⁴ + 4⁴ + 7⁴ + 4⁴ = 6561 + 256 + 2401 + 256 = 9474 → Armstrong number ✔
  • 123 = 1³ + 2³ + 3³ = 1 + 8 + 27 = 36 → Armstrong number नहीं ✘

Step-by-Step: 153 Armstrong Number कैसे है?

किसी भी number को manually check करने के 4 steps हैं:

  1. Digits गिनें: 153 में 3 digits हैं, तो n = 3।
  2. Digits अलग करें: 1, 5 और 3।
  3. हर digit की n-th power निकालें: 1³ = 1, 5³ = 125, 3³ = 27।
  4. जोड़ें और compare करें: 1 + 125 + 27 = 153। Sum original number के बराबर है, इसलिए 153 Armstrong number है।

C में Armstrong Number क्यों सीखना चाहिए?

यह problem छोटा दिखता है, लेकिन इससे आप ये ज़रूरी skills सीखते हैं:

  • Number को digits में तोड़ना (% और / operator से)
  • Loops के साथ काम करना (while loop)
  • Power operations (pow() या manual multiplication)
  • Condition checking (if-else)

इसीलिए यह college practicals, viva और beginner-level coding interviews में बहुत पूछा जाता है। यह critical thinking और structured logic की एक perfect starting problem है।

Real-World Analogy

Armstrong number को एक digital lock के password की तरह सोचिए, जो तभी खुलता है जब सारे digits एक खास math trick के साथ perfectly मिल जाएँ। अगर एक भी digit गड़बड़ हुआ, तो lock नहीं खुलेगा। यही precision इस number को खास बनाती है।

C Program: 3-Digit Armstrong Number Check करना

#include <stdio.h> int main() { int num, originalNum, remainder, result = 0; printf("Enter a 3-digit number: "); scanf("%d", &num); originalNum = num; while (originalNum != 0) { remainder = originalNum % 10; // last digit निकालें result += remainder * remainder * remainder; // digit का cube जोड़ें originalNum /= 10; // last digit हटाओ } if (result == num) printf("%d is an Armstrong number.\n", num); else printf("%d is not an Armstrong number.\n", num); return 0; }

Sample Output

Enter a 3-digit number: 371 371 is an Armstrong number.

यह Program कैसे काम करता है?

  • User से एक number input लिया जाता है।
  • Number की एक copy originalNum में store की जाती है, ताकि original value सुरक्षित रहे।
  • % 10 से हर बार last digit निकाला जाता है।
  • उस digit का cube (power 3) निकाला जाता है, क्योंकि number 3-digit है।
  • सारे cubes को result में जोड़ा जाता है।
  • / 10 से last digit हटाया जाता है, और loop तब तक चलता है जब तक number 0 न हो जाए।
  • अंत में result को original number से compare किया जाता है।

Dry Run: 371 के लिए Program का हर Step

Iteration originalNum remainder (% 10) remainder³ result originalNum / 10
1 371 1 1 1 37
2 37 7 343 344 3
3 3 3 27 371 0 (loop खत्म)

अंत में result = 371 और num = 371, दोनों बराबर हैं, इसलिए output आता है: "371 is an Armstrong number."

Generalized C Program: किसी भी Digit के Armstrong Number के लिए

ऊपर वाला program सिर्फ 3-digit numbers के लिए है। 9474 जैसे 4-digit number पर वह गलत result देगा, क्योंकि वहाँ power 4 चाहिए। इसलिए यह program पहले digits गिनता है, फिर हर digit की n-th power निकालता है।

#include <stdio.h> #include <math.h> int main() { int num, originalNum, remainder, result = 0, n = 0; printf("Enter an integer: "); scanf("%d", &num); originalNum = num; // Step 1: digits गिनो (n) while (originalNum != 0) { originalNum /= 10; ++n; } originalNum = num; // Step 2: हर digit की n-th power का sum while (originalNum != 0) { remainder = originalNum % 10; result += pow(remainder, n); originalNum /= 10; } if (result == num) printf("%d is an Armstrong number.\n", num); else printf("%d is not an Armstrong number.\n", num); return 0; }

Sample Output

Enter an integer: 9474 9474 is an Armstrong number.

Note: Linux/GCC पर pow() use करने पर compile करते समय -lm flag लगाएँ: gcc armstrong.c -o armstrong -lm

Better Approach: pow() के बिना Integer Power Function

pow() function double (decimal) value return करता है। कुछ compilers पर pow(5, 3) का result 125 की जगह 124.9999 आ सकता है, और int में store करते ही वह 124 बन जाता है। इससे सही Armstrong number भी "not Armstrong" दिख सकता है।

Interview और production code में safe तरीका है अपना integer power function लिखना। नीचे का program functions का use करता है, long long से बड़े numbers handle करता है, और 0 को भी सही से check करता है।

#include <stdio.h> // pow() की जगह integer power function (rounding error से बचने के लिए) long long power(int base, int exp) { long long result = 1; for (int i = 0; i < exp; i++) result *= base; return result; } int countDigits(long long num) { int count = 0; if (num == 0) return 1; while (num != 0) { num /= 10; count++; } return count; } int isArmstrong(long long num) { int n = countDigits(num); long long temp = num, sum = 0; while (temp != 0) { sum += power(temp % 10, n); temp /= 10; } return sum == num; } int main() { long long num; printf("Enter a number: "); scanf("%lld", &num); if (isArmstrong(num)) printf("%lld is an Armstrong number.\n", num); else printf("%lld is not an Armstrong number.\n", num); return 0; }

Sample Output

Enter a number: 54748 54748 is an Armstrong number.

C Program: किसी Range में सभी Armstrong Numbers Print करना

"1 से 1000 तक के Armstrong numbers print करो" college exams और interviews में बहुत common सवाल है। यह program किसी भी range के लिए काम करता है:

#include <stdio.h> long long power(int base, int exp) { long long result = 1; for (int i = 0; i < exp; i++) result *= base; return result; } int main() { int start, end; printf("Enter range (start end): "); scanf("%d %d", &start, &end); printf("Armstrong numbers between %d and %d:\n", start, end); for (int num = start; num <= end; num++) { int temp = num, n = 0; long long sum = 0; // digits गिनो do { n++; temp /= 10; } while (temp != 0); // powers का sum temp = num; while (temp != 0) { sum += power(temp % 10, n); temp /= 10; } if (sum == num) printf("%d ", num); } printf("\n"); return 0; }

Sample Output

Enter range (start end): 1 10000 Armstrong numbers between 1 and 10000: 1 2 3 4 5 6 7 8 9 153 370 371 407 1634 8208 9474

Armstrong Numbers की List (Digits के हिसाब से)

Digits Armstrong Numbers
1-digit 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 (हर single digit number Armstrong है)
2-digit कोई नहीं
3-digit 153, 370, 371, 407
4-digit 1634, 8208, 9474
5-digit 54748, 92727, 93084
6-digit 548834
7-digit 1741725, 4210818, 9800817, 9926315

Decimal system (base 10) में कुल 88 Armstrong numbers ही होते हैं, और सबसे बड़ा 39 digits का है। यानी ये numbers infinite नहीं हैं।

Time और Space Complexity

Program Time Complexity Space Complexity
एक number check करना O(d), जहाँ d = digits की संख्या (यानी O(log₁₀ n)) O(1)
Range (1 से N) में check करना O(N × d) O(1)

Integer power function के साथ हर digit पर d बार multiplication होता है, इसलिए एक number के लिए strictly यह O(d²) बनता है। लेकिन d बहुत छोटा होता है (int के लिए अधिकतम 10), इसलिए practically यह बहुत fast है।

Common Mistakes जो Beginners करते हैं

  • ^ को power समझना: C में ^ bitwise XOR operator है, power नहीं। 5^3 का result 6 आता है, 125 नहीं।
  • Original number store न करना: Loop में number बदलता रहता है, इसलिए comparison के लिए उसकी copy पहले ही रखें।
  • हर बार power 3 लेना: 4 या 5 digit numbers के लिए power भी 4 या 5 होनी चाहिए।
  • Integer overflow: int की limit लगभग 2.1 अरब (2147483647) है। बड़े numbers के लिए long long use करें।
  • math.h या -lm भूल जाना: pow() use करने पर header और Linux पर -lm flag दोनों जरूरी हैं।
  • result को 0 से initialize न करना: वरना garbage value जुड़ जाएगी।

Beginners के लिए Tips

  • अगर program में number को modify करना है, तो original number पहले store कर लें।
  • Digit-based problems (reverse number, palindrome, sum of digits) के लिए while loop सबसे अच्छा है।
  • pow() use करते समय math.h include करना न भूलें।
  • हर program का एक बार कागज पर dry run जरूर करें, इससे logic मजबूत होता है।
  • Armstrong के बाद palindrome number, perfect number और strong number जैसे problems try करें, ये सब same logic पर बने हैं।

Armstrong Number से जुड़े FAQs

Q1. Armstrong number क्या होता है?

Armstrong number वह number है जिसके हर digit को कुल digits की संख्या की power पर raise करके जोड़ने पर वही number मिलता है। जैसे 153 = 1³ + 5³ + 3³। इसे narcissistic number भी कहते हैं।

Q2. 153 Armstrong number क्यों है?

153 में 3 digits हैं। 1³ + 5³ + 3³ = 1 + 125 + 27 = 153, जो original number के बराबर है, इसलिए 153 Armstrong number है।

Q3. क्या Armstrong number 3 से ज्यादा digits का हो सकता है?

हाँ। 1634, 8208 और 9474 (4-digit) तथा 54748, 92727 और 93084 (5-digit) भी Armstrong numbers हैं। बस power, digits की संख्या के बराबर होनी चाहिए।

Q4. क्या कोई 2-digit Armstrong number होता है?

नहीं। 10 से 99 के बीच कोई भी Armstrong number नहीं है। 1-digit के बाद सीधे 3-digit वाले 153, 370, 371 और 407 आते हैं।

Q5. C में power कैसे निकालते हैं?

math.h header में दिए pow() function से, जैसे pow(5, 3)। चूँकि pow() double return करता है, integer programs में अपना power function लिखना ज्यादा safe है।

Q6. क्या pow() की जगह ^ use कर सकते हैं?

नहीं। C में ^ bitwise XOR operator है, power नहीं। 5^3 का result 6 आता है, 125 नहीं।

Q7. बड़े Armstrong numbers के लिए कौन सा data type use करें?

बड़े numbers के लिए long long int या unsigned long long use करें, ताकि int की limit (लगभग 2.1 अरब) पार होने पर overflow न हो।

Q8. क्या math.h के बिना Armstrong program लिख सकते हैं?

हाँ! Digit को खुद से multiply करके (जैसे remainder * remainder * remainder) या loop वाला अपना power function बनाकर math.h के बिना program लिखा जा सकता है।

Q9. Armstrong number और narcissistic number में क्या अंतर है?

कोई अंतर नहीं है। दोनों एक ही concept के दो नाम हैं। इसे pluperfect digital invariant भी कहा जाता है।

Key Takeaways

  • Armstrong number = digits की (कुल digits वाली) power का sum, जो original number के बराबर हो।
  • 3-digit Armstrong numbers सिर्फ चार हैं: 153, 370, 371, 407।
  • C में digits निकालने के लिए % 10 और हटाने के लिए / 10 use होता है।
  • Power के लिए pow() या (बेहतर) अपना integer power function use करें, ^ कभी नहीं।
  • बड़े numbers के लिए long long data type सही है।

निष्कर्ष (Conclusion)

Armstrong number पहली नज़र में एक math puzzle जैसा लगता है, लेकिन C में code करने के बाद यह logic building और number manipulation की एक बेहतरीन exercise बन जाता है। Loops, operators, conditions और functions, सब कुछ इस एक program में practice हो जाता है।

ऐसे ही programs scratch से बनाना सीखना चाहते हैं? Uncodemy के C Programming Course से जुड़ें और अपनी coding को अगले level पर ले जाएँ।

Related Hindi Guides

नीचे दिए Hindi pages live होने के बाद इस blog में contextual links जोड़ें — जो page अभी live नहीं है, उसका link न डालें (404 से बचें)।

Topic Planned URL
Python में Prime Number /hi/blog/python-code-to-check-prime-number
C में Data Types /hi/blog/what-is-data-type-in-c-types-and-examples
while और do-while का अंतर /hi/blog/difference-between-while-and-do-while-in-c/

Visit Us

Delhi Centre Address
2nd & 3rd Floor, Maa Katyayni Complex, MB-1E, Madhuban Rd, next to DSEU Ambedkar College, Laxmi Nagar, Shakarpur Extension, Shakarpur, Delhi, 110092
Opening hours
Monday – Sunday, 06:00 – 22:30
Website
uncodemy.com