স্ট্রং নম্বর কী?
একটি স্ট্রং নম্বর হল এমন একটি সংখ্যা যা তার অঙ্কগুলোর ফ্যাক্টোরিয়ালের যোগফলের সমান।
উদাহরণ
১৪৫: ১-এর ফ্যাক্টোরিয়াল = ১, ৪-এর ফ্যাক্টোরিয়াল = ২৪, ৫-এর ফ্যাক্টোরিয়াল = ১২০
যোগফল = ১ + ২৪ + ১২০ = ১৪৫
নিচের প্রোগ্রামটি ইনপুট সংখ্যাটি স্ট্রং নম্বর কিনা তা যাচাই করে। সংখ্যা স্ট্রং হলে 'True' রিটার্ন করে, অন্যথায় 'False'।
দুটি ফাংশন ব্যবহার করা হয়েছে: isStrong() - সংখ্যাটি স্ট্রং কিনা তা নির্ধারণ করে, এবং factorial() - দেওয়া অঙ্কের ফ্যাক্টোরিয়াল রিটার্ন করে।
isStrong() ফাংশনের ভেতর থেকে factorial() কল করা হয় প্রতিটি অঙ্কের (n%10) ফ্যাক্টোরিয়াল বের করে যোগফলে যোগ করতে।
সব অঙ্কের ফ্যাক্টোরিয়াল যোগ করার পর, যোগফলটি মূল সংখ্যার সাথে তুলনা করা হয়। সমান হলে true, অন্যথায় false রিটার্ন করা হয়।
isStrong() ফাংশনে n কে num-এ কপি কেন করা হয়েছে? হোয়াইল লুপে পুনরাবৃত্তির সময় n-এর মান শূন্য হয়ে যায়। কিন্তু পরে যোগফলের সাথে তুলনা করার জন্য মূল মানটি রাখতে হয়, তাই n কে num-এ কপি করা হয়েছে।
factorial() ফাংশনটি রিকার্শন ব্যবহার করে অঙ্কগুলোর ফ্যাক্টোরিয়াল হিসাব করে।
প্রোগ্রাম উদাহরণ
def factorial(d):
if d == 1 or d == 0:
return 1
return d * factorial(d - 1)
def isStrong(n):
num = n
sm = 0
while n > 0:
digit = n % 10
sm = sm + factorial(digit)
n = n // 10
if sm == num:
return True
else:
return False
print("একটি সংখ্যা ইনপুট দিন")
a = int(input())
print(isStrong(a))
আউটপুট
একটি সংখ্যা ইনপুট দিন 145
True