ধরুন আমাদের একটি সংখ্যা n আছে। আমাদের পরীক্ষা করতে হবে n একটি আকরিক সংখ্যা কি না। যেমন আমরা জানি একটি আকরিক সংখ্যা হল এমন একটি সংখ্যা যার ভাজকের একটি পূর্ণসংখ্যা হারমোনিক মান রয়েছে৷
সুতরাং, যদি ইনপুটটি 28 এর মত হয়, তাহলে আউটপুটটি সত্য হবে কারণ 28 এর ছয়টি ভাজক রয়েছে:[1, 2, 4, 7, 14, 28], তাই
যেহেতু 3 একটি পূর্ণসংখ্যা তাই 28 একটি আকরিক সংখ্যা।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি ফাংশন সংজ্ঞায়িত করুন get_all_div()। এটি n লাগবে
- div :=একটি নতুন তালিকা
- এর জন্য i রেঞ্জ 1 থেকে পূর্ণসংখ্যার অংশ (n এর বর্গমূল), কর
- যদি n i দ্বারা বিভাজ্য হয়, তাহলে
- যদি (n / i) এর ভাগফল i হয়, তাহলে
- div-এর শেষে i ঢোকান
- অন্যথায়,
- div-এর শেষে i ঢোকান
- div-এর শেষে (n / i) এর ভাগফল যোগ করুন
- যদি (n / i) এর ভাগফল i হয়, তাহলে
- যদি n i দ্বারা বিভাজ্য হয়, তাহলে
- রিটার্ন ডিভি
- একটি ফাংশন সংজ্ঞায়িত করুন get_harmonic_mean()। এটি n লাগবে
- div :=get_all_div(n)
- মোট :=0
- দৈর্ঘ্য :=div এর আকার
- আমি 0 থেকে দৈর্ঘ্য - 1 রেঞ্জের জন্য, কর
- মোট :=মোট + (n / div[i])
- মোট :=মোট / n
- রিটার্ন দৈর্ঘ্য / মোট
- প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন:
- মান :=get_harmonic_mean(n)
- যদি গড় একটি পূর্ণসংখ্যা হয়, তাহলে
- সত্য ফেরান
- মিথ্যে ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ কোড
def get_all_div(n): div = [] for i in range(1, int(n**(0.5)) + 1): if n % i == 0: if n // i == i: div.append(i) else: div.append(i) div.append(n // i) return div def get_harmonic_mean(n): div = get_all_div(n) total = 0 length = len(div) for i in range(0, length): total += (n / div[i]) total /= n return length / total def solve(n): mean = get_harmonic_mean(n) if mean - int(mean) == 0: return True return False n = 28 print(solve(n))
ইনপুট
28
আউটপুট
True