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

Python - ऐसी पॉजिटिव संख्या M ढूंढना जिससे gcd(N^M, N&M) अधिकतम हो

मान लीजिए हमारे पास एक संख्या N है, हमें एक पॉजिटिव संख्या M ढूंढनी है जिससे gcd(N^M, N&M) जितना संभव हो उतना बड़ा हो और m < n। हम प्राप्त किए गए सबसे बड़े gcd को भी लौटाएंगे।

तो, यदि इनपुट 20 जैसा है, तो आउटपुट 31 होगा।

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

  • यदि bit_count(n), 0 के समान है, तो
    • i को 2 से int(sqrt(n)) + 1 तक रेंज में, करें
      • यदि n % i == 0, तो
        • int(n / i) लौटाएं
  • अन्यथा,
    • val := 0
    • p := 1
    • dupn := n
    • जब n नॉन-ज़ीरो है, करें
      • यदि (n & 1) == 0, तो
        • val := val + p
      • p := p * 2
      • n := n >> 1
    • gcd(val ^ dupn, val & 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. - Python में अधिकतम N ढूंढना जैसे कि पहले N प्राकृतिक संख्याओं के वर्ग का योग X से अधिक न हो

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

  1. - पायथन में किसी संख्या के अधिकतम कम्पोजिट समन्वयों की संख्या खोजें

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