আর্মস্ট্রং নাম্বার কী?
আর্মস্ট্রং নাম্বার (নার্সিসিস্টিক নাম্বার) হলো এমন একটি সংখ্যা যা নিজের অঙ্কগুলোর ঘনের সমষ্টির সমান। ৩-অঙ্কের সংখ্যার জন্য: abc = a³ + b³ + c³
উদাহরণ:
- ১৫৩: 1³ + 5³ + 3³ = 1 + 125 + 27 = ১৫৩ ✓
- ৩৭০: 3³ + 7³ + 0³ = 27 + 343 + 0 = ৩৭০ ✓
- ৩৭১: 3³ + 7³ + 1³ = 27 + 343 + 1 = ৩৭১ ✓
- ৪০৭: 4³ + 0³ + 7³ = 64 + 0 + 343 = ৪০৭ ✓
ইনপুট ও আউটপুট উদাহরণ
ইনপুট:
Enter the number : 407
আউটপুট:
407 is an Armstrong number
অ্যালগরিদম
- প্রোগ্রাম শুরু করুন
- চারটি ইন্টিজার ভেরিয়েবল ঘোষণা করুন: my_input, my_temp, my_remainder, my_result
- ব্যবহারকারী থেকে সংখ্যা ইনপুট নিন
- my_result = 0, my_temp = my_input সেট করুন
- হোয়াইল লুপ চালান যতক্ষণ my_temp != 0
- my_remainder = my_temp % 10 (শেষ অঙ্ক নিন)
- my_result += Math.pow(my_remainder, 3) (ঘন যোগ করুন)
- my_temp /= 10 (শেষ অঙ্ক বাদ দিন)
- লুপ শেষে my_result == my_input চেক করুন
- ফলাফল প্রদর্শন করুন
- প্রোগ্রাম শেষ করুন
উদাহরণ ১: ব্যবহারকারী ইনপুট নেওয়া
import java.util.Scanner;
public class IsArmstrong {
public static void main(String[] args) {
int my_input, my_temp, my_remainder, my_result;
my_result = 0;
System.out.println("Required packages have been imported");
Scanner my_scanner = new Scanner(System.in);
System.out.println("A reader object has been defined");
System.out.print("Enter the number : ");
my_input = my_scanner.nextInt();
my_temp = my_input;
while (my_temp != 0) {
my_remainder = my_temp % 10;
my_result += Math.pow(my_remainder, 3);
my_temp /= 10;
}
if (my_result == my_input)
System.out.println(my_input + " is an Armstrong number");
else
System.out.println(my_input + " is not an Armstrong number");
}
}
উদাহরণ ২: পূর্বনির্ধারিত মান ব্যবহার
public class IsArmstrong {
public static void main(String[] args) {
int my_input, my_temp, my_remainder, my_result;
my_input = 407;
my_result = 0;
System.out.println("The number is defined as " + my_input);
my_temp = my_input;
while (my_temp != 0) {
my_remainder = my_temp % 10;
my_result += Math.pow(my_remainder, 3);
my_temp /= 10;
}
if (my_result == my_input)
System.out.println(my_input + " is an Armstrong number");
else
System.out.println(my_input + " is not an Armstrong number");
}
}
স্টেপ-বাই-স্টেপ ডেমো (৪০৭ এর জন্য)
| ইটারেশন | my_temp | my_remainder | my_remainder³ | my_result | my_temp (after /10) |
|---|---|---|---|---|---|
| ১ | 407 | 7 | 343 | 343 | 40 |
| ২ | 40 | 0 | 0 | 343 | 4 |
| ৩ | 4 | 4 | 64 | 407 | 0 |
কোড ব্যাখ্যা
- Math.pow(x, 3): x-এর ঘন বের করার জন্য (x³)
- my_temp != 0: সব অঙ্ক প্রসেস হয়ে গেলে লুপ বন্ধ হয়
- int vs double: Math.pow ডাবল রিটার্ন করে, কিন্তু int-এ স্টোর করলে অটোমেটিক কাস্ট হয়
সাধারণীকৃত আর্মস্ট্রং (n-অঙ্কের জন্য)
n-অঙ্কের সংখ্যার জন্য প্রতিটি অঙ্কের n-তম ঘাতের সমষ্টি:
public static boolean isArmstrong(int num) {
String str = String.valueOf(num);
int n = str.length();
int sum = 0, temp = num;
while (temp != 0) {
int digit = temp % 10;
sum += Math.pow(digit, n);
temp /= 10;
}
return sum == num;
}
জানা আর্মস্ট্রং নাম্বারগুলো (১০০০০ পর্যন্ত)
০, ১, ২, ৩, ৪, ৫, ৬, ৭, ৮, ৯, ১৫৩, ৩৭০, ৩৭১, ৪০৭, ১৬৩৪, ৮২০৮, ৯৪৭৪
টিপস
- Math.pow() এর বদলে digit*digit*digit ব্যবহার করলে ফাস্টার হয়
- বড় সংখ্যার জন্য long ব্যবহার করুন
- প্রি-কম্পিউট করা ঘন মানগুলো অ্যারেয়ে রাখলে আরও দ্রুত হবে