একটি পূর্ণসংখ্যকে n-অর্ডারের আর্মস্ট্রอง সংখ্যা বলা হয় যদি এর প্রতিটি অঙ্ককে আলাদা করে ঘন করা হলে এবং সেগুলো যোগ করা হলে যোগফলটি সংখ্যাটির সমান হয়। অর্থাৎ abcd... = a3 + b3 + c3 + d3 + ...
৩ অঙ্কের আর্মস্ট্রอง সংখ্যার ক্ষেত্রে, প্রতিটি অঙ্কের ঘনফলের যোগফল সংখ্যাটির সমান হয়। উদাহরণস্বরূপ:
153 = 13 + 53 + 33 // 153 একটি আর্মস্ট্রอง সংখ্যা।
ইনপুট: দুটি সংখ্যা দিন (ইন্টারভাল): 999 9999 আউটপুট: 999 এবং 9999-এর মাঝপথে আর্মস্ট্রอง সংখ্যা: 1634 8208 9474
ব্যাখ্যা
1634 = 13+63+33+43 = 1+216+27+64 = 1634
নিচে বাস্তবায়ন করা পদ্ধতিটি সহজ। আমরা দেওয়া রেঞ্জের সব সংখ্যার মধ্য দিয়ে ট্রাভার্স করি। প্রতিটি সংখ্যার জন্য, প্রথমে তার অঙ্কের সংখ্যা গণনা করি। ধরি বর্তমান সংখ্যার অঙ্কের সংখ্যা n। তারপর সব অঙ্কের ঘনফলের যোগফল বের করি। যদি যোগফলটি সংখ্যাটির সমান হয়, তবে সংখ্যাটি প্রিন্ট করি।
উদাহরণ
#include <stdio.h>
#include <math.h>
int main() {
int low = 100;
int high = 400;
printf("The amstrong 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;
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;
}