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

जांचें कि क्या कोई संख्या पायथन में ट्रोजन नंबर है

मान लीजिए कि हमारे पास एक संख्या n है, हमें जांचना है कि n एक ट्रोजन संख्या है या नहीं। जैसा कि हम जानते हैं कि ट्रोजन नंबर एक ऐसी संख्या है जो एक पूर्ण शक्ति के बिना एक मजबूत संख्या है। एक संख्या n एक मजबूत संख्या है जब प्रत्येक अभाज्य भाजक या n के कारक p के लिए, p^2 भी एक भाजक होता है। दूसरे शब्दों में, प्रत्येक अभाज्य गुणनखंड कम से कम दो बार प्रकट होता है। ट्रोजन नंबर मजबूत हैं। लेकिन उलटा सच नहीं है। तो इसका मतलब है, सभी मजबूत संख्याएं ट्रोजन संख्याएं नहीं हैं:केवल वे जिन्हें a^b के रूप में प्रदर्शित नहीं किया जा सकता है।

इसलिए, यदि इनपुट 72 की तरह है, तो आउटपुट ट्रू होगा, क्योंकि 72 को (6*6*2) =(6^2 * 2) के रूप में दर्शाया जा सकता है। मजबूत संख्या लेकिन पूर्ण शक्ति के बिना।

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

  • एक फ़ंक्शन को परिभाषित करें check_perfect_pow() । इसमें n
  • . लगेगा
  • यदि n 1 के समान है, तो
    • सही लौटें
  • x के लिए श्रेणी 2 से पूर्णांक भाग (n का वर्गमूल) + 1 के लिए, करें
    • y :=2
    • p =x^y
    • जबकि p <=n और p> 0, करते हैं
      • यदि p, n के समान है, तो
        • सही लौटें
      • y :=y + 1
      • p =x^y
  • झूठी वापसी
  • एक फ़ंक्शन को परिभाषित करें check_strong_num() । इसमें n
  • . लगेगा
  • गिनती :=संख्याओं की बारंबारता रखने वाला नक्शा, प्रारंभ में सभी 0 हैं
  • जबकि n mod 2 0 के समान है, करें
    • n :=n/2 (पूर्णांक विभाजन)
    • गिनती[2] :=गिनती[2] + 1
  • i श्रेणी 3 से पूर्णांक भाग (n का वर्गमूल) + 1 के लिए, 2 से बढ़ाएँ, करें
    • जबकि n mod i 0 के समान है, करते हैं
      • n :=n / i (पूर्णांक विभाजन)
      • गिनती[i] :=गिनती[i] + 1
  • यदि n> 2 शून्येतर है, तो
    • गिनती[n] :=गिनती[n] + 1
  • झंडा :=0
  • प्रत्येक कुंजी के लिए, आइटम में मान () गिनती के, करते हैं
    • यदि मान 1 के समान है, तो
      • झंडा :=1
      • ब्रेक
  • यदि ध्वज 1 के समान है, तो
    • झूठी वापसी
  • सही लौटें
  • मुख्य विधि से निम्न कार्य करें -
    • सही लौटें जब check_perfect_pow(n) गलत हो और check_strong_num(n) सही हो, अन्यथा गलत लौटें

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

from math import sqrt, pow
def check_perfect_pow(n):
   if n == 1:
      return True
   for x in range(2, int(sqrt(n)) + 1):
      y = 2
      p = x**y
      while p <= n and p > 0:
         if p == n:
            return True
         y += 1
         p = x**y
   return False
def check_strong_num(n):
   count = {i:0 for i in range(n)}
   while n % 2 == 0:
      n = n // 2
      count[2] += 1
   for i in range(3,int(sqrt(n)) + 1, 2):
      while n % i == 0:
         n = n // i
         count[i] += 1
   if n > 2:
      count[n] += 1
   flag = 0
   for key,value in count.items():
      if value == 1:
         flag = 1
         break
   if flag == 1:
      return False
   return True
def isTrojan(n):
   return check_perfect_pow(n) == False and check_strong_num(n)
n = 72
print(isTrojan(n))

इनपुट

72

आउटपुट

True

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

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

  1. आर्मस्ट्रांग नंबर की जांच के लिए पायथन प्रोग्राम

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन एक पूर्णांक n दिया गया है, हमें यह जांचना होगा कि दिया गया पूर्णांक एक आर्मस्ट्रांग संख्या है। एक धनात्मक पूर्णांक को आर्मस्ट्रांग क्रमांक n कहा जाता है यदि abcd... = a^n + b^n + c^n + d^n + &hel

  1. पायथन में यादृच्छिक संख्या सूची बनाना

    विभिन्न श्रेणी के मूल्यों के लिए किसी कार्यक्रम के मॉडल या व्यवहार का अध्ययन करते समय यादृच्छिक संख्याएँ उत्पन्न करने की आवश्यकता होती है। पायथन यादृच्छिक मॉड्यूल का उपयोग करके ऐसी यादृच्छिक संख्याएँ उत्पन्न कर सकता है। नीचे दिए गए उदाहरणों में हम पहले देखेंगे कि कैसे एक यादृच्छिक संख्या उत्पन्न की