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

एक सकारात्मक संख्या एम खोजें जैसे कि जीसीडी (एन ^ एम, एन एंड एम) पायथन में अधिकतम है

मान लीजिए कि हमारे पास एक संख्या एन है, हमें एक सकारात्मक संख्या एम खोजना है जैसे कि जीसीडी (एन ^ एम, एन एंड एम) जितना संभव हो उतना बड़ा हो और एम <एन। हम इस प्रकार प्राप्त सबसे बड़ा gcd भी लौटा देंगे।

तो, अगर इनपुट 20 की तरह है, तो आउटपुट 31 होगा

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

  • यदि bit_count(n) 0 के समान है, तो
    • i के लिए 2 से लेकर int तक ((n) का वर्गमूल) + 1, do
      • यदि n mod i 0 के समान है, तो
        • रिटर्न इंट(n / i)
  • अन्यथा,
    • वैल:=0
    • p :=
    • डुपन:=n
    • जबकि n गैर-शून्य है, करें
      • यदि (n और 1) 0 के समान है, तो
        • वैल:=वैल + पी
      • p :=p * 2
      • n :=n>> 1
    • रिटर्न gcd(val XOR dupn, val AND dupn)
  • वापसी 1

उदाहरण

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

from math import gcd, sqrt
def bit_count(n):
   if (n == 0):
      return 0
   else:
      return (((n & 1) == 0) + bit_count(n >> 1))
def maximum_gcd(n):
   if (bit_count(n) == 0):
      for i in range(2, int(sqrt(n)) + 1):
         if (n % i == 0):
            return int(n / i)
   else:
      val = 0
      p = 1
      dupn = n
      while (n):
         if ((n & 1) == 0):
            val += p
         p = p * 2
         n = n >> 1
      return gcd(val ^ dupn, val & dupn)
   return 1
n = 20
print(maximum_gcd(n))

इनपुट

20

आउटपुट

31

  1. पहले N प्राकृतिक संख्याओं के क्रमचय में उप सरणियों की संख्या ज्ञात करें जैसे कि उनका माध्यिका M पायथन में है

    मान लीजिए कि हमारे पास एक सरणी A है जिसमें पहले N प्राकृतिक संख्याओं का क्रमचय है और दूसरी संख्या M भी दी गई है, जहाँ M ≤ N, हमें उप-सरणी की संख्या ज्ञात करनी होगी जैसे कि अनुक्रम का माध्यक M है। जैसा कि हम जानते हैं कि किसी अनुक्रम के माध्यिका को उस तत्व के मान के रूप में परिभाषित किया जाता है जो आ

  1. अधिकतम N ज्ञात करें जैसे कि पहले N प्राकृतिक संख्याओं के वर्ग का योग Python में X से अधिक न हो

    मान लीजिए कि हमारे पास एक दिया गया पूर्णांक X है, हमें अधिकतम मान N ज्ञात करना है ताकि पहले N प्राकृतिक संख्याओं का योग मान X से अधिक न हो। इसलिए, यदि इनपुट X =7 जैसा है, तो आउटपुट 2 होगा क्योंकि 2 N का अधिकतम संभव मान है, N =3 के लिए, श्रृंखला का योग X =7 से अधिक होगा इसलिए, 1^2 + 2^ 2 + 3^2 =1 +

  1. पायथन में किसी संख्या के समग्र योगों की अधिकतम संख्या ज्ञात करें

    मान लीजिए कि हमारे पास एक दी गई संख्या N है, जो कि श्रेणी (1<=N<=10^9) में है, हमें N को समग्र योगों की सबसे बड़ी संभव संख्या के योग के रूप में प्रस्तुत करना होगा और इस सबसे बड़ी संख्या को वापस करें, अन्यथा जब हमें कोई विभाजन नहीं मिल रहा है, तो -1 लौटा दें। इसलिए, यदि इनपुट 16 की तरह है, तो आउटपुट