কম্পিউটার

পাইথনে একটি সংখ্যা একটি অ্যাকিলিস নম্বর কিনা তা পরীক্ষা করুন


ধরুন আমাদের একটি সংখ্যা 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

  1. পাইথনে N একটি ডিহেড্রাল প্রাইম নম্বর কিনা তা পরীক্ষা করুন

  2. পাইথনে প্রাইম বা না

  3. প্রাইম নম্বর চেক করতে পাইথন প্রোগ্রাম

  4. পাইথন ব্যবহার করে একটি সংখ্যা প্রাইম কিনা তা কীভাবে পরীক্ষা করবেন?