Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

जांचें कि कोई संख्या एक अकिलीज़ संख्या है या नहीं, पायथन में

मान लीजिए हमारे पास एक संख्या n है; हमें जांचना है कि n एक अकिलीज़ संख्या है या नहीं। जैसा कि हम जानते हैं कि एक संख्या एच्लीस संख्या होती है जब एक संख्या शक्तिशाली होती है (एक संख्या एन को शक्तिशाली संख्या कहा जाता है जब इसके प्रत्येक प्रमुख कारक पी के लिए, पी ^ 2 भी इसे विभाजित करता है) लेकिन एक पूर्ण शक्ति नहीं। अकिलीज़ संख्याओं के कुछ उदाहरण हैं:72, 108, 200, 288, 392, 432, 500, 648, 675, 800, 864, 968, 972, 1125।

इसलिए, यदि इनपुट 108 की तरह है, तो आउटपुट ट्रू होगा, क्योंकि 6 और 36 दोनों इसे विभाजित करते हैं और यह पूर्ण वर्ग नहीं है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • एक फ़ंक्शन को परिभाषित करें check_powerful() । इसमें n
  • . लगेगा
  • जबकि n mod 2 समान है, करें
    • p :=0
    • जबकि n mod 2 0 के समान है, करें
      • n :=n / 2
      • p :=p + 1
    • यदि p 1 के समान है, तो
      • झूठी वापसी
  • p :=का पूर्णांक (n का वर्गमूल) + 1
  • 3 से p की श्रेणी में फ़ैक्टर के लिए, 2 की वृद्धि करें
    • p :=0
    • जबकि n मॉड फैक्टर 0 के समान है, करें
      • n :=n / फ़ैक्टर
      • p :=p + 1
    • यदि p 1 के समान है, तो
      • झूठी वापसी
  • सही लौटें जब (n 1 के समान हो)
  • एक फ़ंक्शन को परिभाषित करें check_power() । इसमें एक
  • . लगेगा
  • यदि a 1 के समान है, तो
    • सही लौटें
  • p :=का पूर्णांक (n का वर्गमूल) + 1
  • मैं के लिए 2 से ए की सीमा में, 1 की वृद्धि करें
    • वैल:=लॉग (ए) / लॉग (i) [सभी आधार ई]
    • अगर (वैल - (वैल) का पूर्णांक भाग) <0.000000001, तो
      • सही लौटें
  • झूठी वापसी
  • मुख्य विधि से, निम्न कार्य करें -
  • यदि 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 एक डायहेड्रल प्राइम नंबर है या नहीं पायथन में

    मान लीजिए कि हमारे पास एक संख्या n है। हमें जांचना है कि n डायहेड्रल प्राइम है या नहीं। एक संख्या को डायहेड्रल प्राइम कहा जाता है जब वह संख्या स्वयं अभाज्य होती है और 7-सेगमेंट डिस्प्ले का उपयोग करके समान संख्या या कोई अन्य अभाज्य संख्या भी दिखाई जाती है, भले ही डिस्प्ले का ओरिएंटेशन (सामान्य या ऊपर

  1. प्राइम नंबर चेक करने के लिए पायथन प्रोग्राम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक नंबर दिया गया है, हमें यह जांचना होगा कि दी गई संख्या एक अभाज्य संख्या है या नहीं। 1 से बड़ी दी गई धनात्मक संख्या जिसका 1 के अलावा कोई अन्य गुणनखंड नहीं है और संख्या ही अभाज्य संख्या कहलाती है। 2, 3, 5, 7, आ

  1. कैसे जांचें कि कोई संख्या प्राइम है या पायथन का उपयोग नहीं कर रही है?

    इस समस्या के समाधान में प्रयोग किया जाने वाला सिद्धांत यह है कि दी गई संख्या को उसके वर्गमूल से 3 से विभाजित करना, एक संख्या का वर्गमूल सबसे बड़ा संभावित कारक है जिसके आगे यह जांचना आवश्यक नहीं है कि यह किसी अन्य संख्या से विभाज्य है यह तय करने के लिए कि यह अभाज्य संख्या है। फ़ंक्शन 2 से विभाज्य और