স্ট্রং নাম্বার কী?
একটি সংখ্যা যদি তার প্রতিটি ডিজিটের ফ্যাক্টোরিয়ালের যোগফল ঐ সংখ্যার সমান হয়, তবে সেটিকে স্ট্রং নাম্বার বলা হয়।
উদাহরণ
- 145: 1! + 4! + 5! = 1 + 24 + 120 = 145 → স্ট্রং নাম্বার
- 123: 1! + 2! + 3! = 1 + 2 + 6 = 9 ≠ 123 → স্ট্রং নাম্বার নয়
- 40585: 4!+0!+5!+8!+5! = 24+1+120+40320+120 = 40585 → স্ট্রং নাম্বার
অ্যালগরিদম
- সংখ্যা ইনপুট নিন, টেম্পে কপি রাখুন (
temp = n) - যখন
n > 0:digit = n % 10(শেষ ডিজিট)fact = factorial(digit)ক্যালকুলেট করুনsum += factn = n / 10(শেষ ডিজিট বাদ দিন)
- যদি
sum == temp→ স্ট্রং নাম্বার, অন্যথায় নয়।
সি প্রোগ্রাম
#include <stdio.h>
int factorial(int n) {
int fact = 1;
for (int i = 2; i <= n; i++)
fact *= i;
return fact;
}
int main() {
int n, temp, digit, sum = 0;
printf("Enter a number: ");
scanf("%d", &n);
temp = n;
while (n > 0) {
digit = n % 10;
sum += factorial(digit);
n /= 10;
}
if (sum == temp)
printf("%d is a Strong Number\n", temp);
else
printf("%d is NOT a Strong Number\n", temp);
return 0;
}
আউটপুট
Run 1: Enter a number: 145 145 is a Strong Number Run 2: Enter a number: 25 25 is NOT a Strong Number
অপ্টিমাইজেশন: প্রি-কম্পিউটেড ফ্যাক্টোরিয়াল টেবিল
ডিজিট ০-৯ পর্যন্ত, তাই ফ্যাক্টোরিয়াল প্রি-কম্পিউট করে রাখলে দ্রুত হয়।
int fact[10] = {1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880}; // 0! to 9!
while (n > 0) {
sum += fact[n % 10];
n /= 10;
}
জানা স্ট্রং নাম্বারগুলো (বেস ১০-এ)
১, ২, ১৪৫, ৪০৫৮৫ — মাত্র এই ৪টি।