আর্মস্ট্রং নম্বর (Armstrong Number) = তার ডিজিটগুলোর যোগফল, প্রতিটি ডিজিটকে মোট ডিজিট সংখ্যার ঘাতে তোলার সমান। যেমন: ১৫৩ = 1³ + 5³ + 3³ = ১ + ১২৫ + ২৭ = ১৫৩।
উদাহরণ
3 = 3¹ 153 = 1³ + 5³ + 3³ = 153 370 = 3³ + 7³ + 0³ = 370 407 = 4³ + 0³ + 7³ = 407 1634 = 1⁴ + 6⁴ + 3⁴ + 4⁴ = 1634
উদাহরণ কোড
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int lowerbound = 100, upperbound = 500;
cout << "Armstrong Numbers between " << lowerbound << " and " << upperbound << " are: ";
for (int num = lowerbound; num <= upperbound; num++) {
int temp = num;
int digitNum = 0;
// Count digits
while (temp != 0) {
digitNum++;
temp /= 10;
}
temp = num;
int digitSum = 0;
// Sum of digits^digitNum
while (temp != 0) {
int remainderNum = temp % 10;
digitSum += pow(remainderNum, digitNum);
temp /= 10;
}
if (num == digitSum)
cout << num << " ";
}
return 0;
}
আউটপুট
Armstrong Numbers between 100 and 500 are: 153 370 371 407
ব্যাখ্যা
lowerboundথেকেupperboundপর্যন্ত লুপ।- প্রথম
while: ডিজিট সংখ্যা গণনা (digitNum)। - দ্বিতীয়
while: প্রতিটি ডিজিট এরdigitNumঘাত যোগ করেdigitSum। num == digitSumহলে আর্মস্ট্রং → প্রিন্ট।
নোট: pow() ফ্লোটিং পয়েন্ট রিটার্ন করে, বড় সংখ্যার জন্য রাউন্ডিং এরর হতে পারে। ইন্টিজার পাওয়ার ফাংশন লিখা ভালো।