ধরুন আমাদের একটি সংখ্যা n আছে; আমাদের চেক করতে হবে n একটি অ্যাকিলিস সংখ্যা কি না। আমরা জানি যে একটি সংখ্যা হল অ্যাকিলিস সংখ্যা যখন একটি সংখ্যা শক্তিশালী (একটি সংখ্যা N কে শক্তিশালী সংখ্যা বলা হয় যখন এটির প্রতিটি মৌলিক ফ্যাক্টর p, p^2 এটিকে ভাগ করে) কিন্তু একটি নিখুঁত শক্তি নয়। অ্যাকিলিস সংখ্যার কিছু উদাহরণ হল:72, 108, 200, 288, 392, 432, 500, 648, 675, 800, 864, 968, 972, 1125৷
সুতরাং, যদি ইনপুটটি 108 এর মত হয়, তাহলে আউটপুটটি True হবে, কারণ 6 এবং 36 উভয়ই এটিকে ভাগ করে এবং এটি নিখুঁত বর্গ নয়।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি ফাংশন সংজ্ঞায়িত করুন check_powerful()। এটি n লাগবে
- যদিও n mod 2 একই, do
- p :=0
- যদিও n mod 2 0 এর মতো, do
- n :=n / 2
- p :=p + 1
- যদি p 1 এর মত হয়, তাহলে
- মিথ্যে ফেরত দিন
- p :=পূর্ণসংখ্যা (n এর বর্গমূল) + 1
- 3 থেকে p রেঞ্জের ফ্যাক্টরের জন্য, 2 বাড়ান, করুন
- p :=0
- যদিও n mod ফ্যাক্টর 0 এর মত, do
- n :=n / ফ্যাক্টর
- p :=p + 1
- যদি p 1 এর মত হয়, তাহলে
- মিথ্যে ফেরত দিন
- সত্য ফেরত দিন যখন (n 1 এর মত হয়)
- একটি ফাংশন সংজ্ঞায়িত করুন check_power()। এটি একটি লাগবে৷
- যদি a 1 এর মত হয়, তাহলে
- সত্য ফেরান
- p :=পূর্ণসংখ্যা (n এর বর্গমূল) + 1
- এর জন্য 2 থেকে a রেঞ্জের মধ্যে, 1 দ্বারা বৃদ্ধি করুন, করুন
- val :=log(a) / log(i) [all base e]
- যদি (val - (val) এর পূর্ণসংখ্যা অংশ) <0.00000001, তারপর
- সত্য ফেরান
- মিথ্যে ফেরত দিন
- প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন -
- যদি check_powerful(n) True এর মত হয় এবং check_power(n) False এর মত হয়, তাহলে
- সত্য ফেরান
- অন্যথায়,
- মিথ্যে ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
from math import sqrt, log def check_powerful(n): while (n % 2 == 0): p = 0 while (n % 2 == 0): n /= 2 p += 1 if (p == 1): return False p = int(sqrt(n)) + 1 for factor in range(3, p, 2): p = 0 while (n % factor == 0): n = n / factor p += 1 if (p == 1): return False return (n == 1) def check_power(a): if (a == 1): return True p = int(sqrt(a)) + 1 for i in range(2, a, 1): val = log(a) / log(i) if ((val - int(val)) < 0.00000001): return True return False def isAchilles(n): if (check_powerful(n) == True and check_power(n) == False): return True else: return False n = 108 print(isAchilles(n))
ইনপুট
108
আউটপুট
True