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 मिनट
इस लेख में आप सीखेंगे
साथ ही: 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 तब होगा जब:
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 हैं:
- Digits गिनें: 153 में 3 digits हैं, तो n = 3।
- Digits अलग करें: 1, 5 और 3।
- हर digit की n-th power निकालें: 1³ = 1, 5³ = 125, 3³ = 27।
- जोड़ें और 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 करना
Sample Output
यह 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 निकालता है।
Sample Output
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 करता है।
Sample Output
C Program: किसी Range में सभी Armstrong Numbers Print करना
"1 से 1000 तक के Armstrong numbers print करो" college exams और interviews में बहुत common सवाल है। यह program किसी भी range के लिए काम करता है:
Sample Output
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 longuse करें। - 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और हटाने के लिए/ 10use होता है। - Power के लिए pow() या (बेहतर) अपना integer power function use करें, ^ कभी नहीं।
- बड़े numbers के लिए
long longdata 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
- Phone
- +91 9818366550, +91 8766313646
- info@uncodemy.com
- Website
- uncodemy.com