आर्मस्ट्रांग नंबर क्या है?
एक पूर्णांक को क्रम n का आर्मस्ट्रांग नंबर कहा जाता है यदि इसके प्रत्येक अंक को अलग करके घन किया जाए और उनका योग निकाला जाए, तो योग वही संख्या होगी। अर्थात: abcd... = a³ + b³ + c³ + d³ + ...
3 अंकों के आर्मस्ट्रांग नंबर के मामले में, प्रत्येक अंक के घन का योग संख्या के बराबर होता है। उदाहरण:
153 = 1³ + 5³ + 3³ = 1 + 125 + 27 = 153 // 153 एक आर्मस्ट्रांग नंबर है।
उदाहरण
Input: दो संख्याएं दर्ज करें (अंतराल): 999 9999 Output: 999 और 9999 के बीच आर्मस्ट्रांग नंबर हैं: 1634 8208 9474
व्याख्या
1634 = 1³ + 6³ + 3³ + 4³ = 1 + 216 + 27 + 64 = 1634
नीचे लागू दृष्टिकोण सरल है। हम दी गई रेंज में सभी संख्याओं को पार करते हैं। प्रत्येक संख्या के लिए, हम पहले इसमें अंकों की संख्या गिनते हैं। मान लें कि वर्तमान संख्या में अंकों की संख्या n है। फिर हम सभी अंकों के घन का योग निकालते हैं। यदि योग संख्या के बराबर है, तो हम संख्या प्रिंट करते हैं।
उदाहरण
#include <stdio.h>
#include <math.h>
int main() {
int low = 100;
int high = 400;
printf("The armstrong numbers between %d and %d is \n", low, high);
for (int i = low + 1; i < high; ++i) {
int x = i;
int n = 0;
// अंकों की संख्या गिनें
while (x != 0) {
x /= 10;
++n;
}
int pow_sum = 0;
x = i;
// प्रत्येक अंक के nवें घात का योग
while (x != 0) {
int digit = x % 10;
pow_sum += pow(digit, n);
x /= 10;
}
if (pow_sum == i)
printf("%d ", i);
}
printf("\n");
return 0;
}
आउटपुट
The armstrong numbers between 100 and 400 is 153 370 371 407
सामान्यीकृत एल्गोरिदम
n अंकों की संख्या के लिए, आर्मस्ट्रांग संख्या की शर्त है:
संख्या = Σ (अंकᵢ)ⁿ जहां i = 1 से n तक
समय जटिलता
O(d × range) जहां d अधिकतम अंकों की संख्या है और range अंतराल का आकार है।