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

जांचें कि क्या एक पूर्णांक को पायथन में दो अर्ध-अभाज्य संख्याओं के योग के रूप में व्यक्त किया जा सकता है

मान लीजिए कि हमारे पास एक संख्या n है, हमें यह जांचना होगा कि n को दो अर्ध-अभाज्य संख्याओं के योग के रूप में व्यक्त किया जा सकता है या नहीं।

जैसा कि हम जानते हैं कि अर्ध-अभाज्य एक संख्या है यदि इसे दो अभाज्य संख्याओं के गुणनफल के रूप में व्यक्त किया जा सकता है। पहली कुछ अर्ध-अभाज्य संख्याएँ हैं (1 - 100 श्रेणी):4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95.

इसलिए, यदि इनपुट n =108 जैसा है, तो आउटपुट ट्रू होगा क्योंकि यह 14 का योग है और 94 दोनों सेमी-प्राइम हैं।

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

  • MAX :=10000 यह मानते हुए कि दिए गए इनपुट सेमी-प्राइम का योग हैं जो 1 से 10000 की सीमा में हैं
  • अंक:=एक नई सूची
  • s_prime_flags :=MAX आकार की एक सरणी और False से भरें
  • एक फ़ंक्शन परिभाषित करें get_semi_primes() । इसमें लगेगा
  • 2 से MAX-1 की श्रेणी में i के लिए
    • गिनती :=0
    • संख्या:=मैं
    • j :=2
    • गिनते समय <2 और j^2 <=num, करें
      • जबकि संख्या j से विभाज्य है, करें
        • संख्या:=संख्या / जे
        • गिनती :=गिनती + 1
      • j :=j + 1
    • यदि संख्या> 1, तो
      • गिनती :=गिनती + 1
    • यदि गिनती 2 के समान है, तो
      • s_prime_flags[i] :=सच
  • अंकों के अंत में i डालें
  • मुख्य विधि से निम्न कार्य करें -
  • कॉल get_semi_primes()
  • मैं :=0
  • अंक [i] <=भागफल (n / 2), करते हैं
    • अगर s_prime_flags[n - nums[i]] सही है, तो
      • सही लौटें
    • i :=i + 1
  • झूठी वापसी

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

उदाहरण

MAX = 10000
nums = []
s_prime_flags = [False] * MAX
def get_semi_primes():
   for i in range(2, MAX):
      count = 0
      num = i
      j = 2
      while count < 2 and j * j <= num:
         while num % j == 0:
            num /= j
            count += 1
      j += 1
      if num > 1:
         count += 1
      if count == 2:
         s_prime_flags[i] = True
         nums.append(i)
def solve(n):
   get_semi_primes()
   i = 0
   while nums[i] <= n // 2:
      if s_prime_flags[n - nums[i]] == True:
         return True
      i += 1
   return False
n = 108
print(solve(n))

इनपुट

[4, 2, 3], 11

आउटपुट

True

  1. पायथन में दो पूर्णांकों का योग

    मान लीजिए कि हमारे पास दो पूर्णांक a और b हैं। हमारा कार्य इन दो पूर्णांकों का योग ज्ञात करना है। एक बाधा यह है कि, हम + या - जैसे किसी भी ऑपरेटर का उपयोग नहीं कर सकते हैं। तो अगर a =5 और b =7, तो परिणाम 12 होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - समाधान के लिए हम बिटवाइज़ लॉजिकल ऑपर

  1. पायथन में दो योग

    मान लीजिए कि हमारे पास पूर्णांकों की एक सरणी है। हमें दो पूर्णांकों के सूचकांकों को वापस करना होगा, जैसे कि यदि हम उन्हें जोड़ दें, तो हम एक विशिष्ट लक्ष्य तक पहुंच जाएंगे जो कि दिया गया है। यहां हम एक धारणा लेंगे, कि सरणी में हमेशा एक अनूठा समाधान होगा, इसलिए एक ही लक्ष्य के लिए सूचकांकों का कोई भी

  1. कैसे जांचें कि दो नंबर (एम, एन) सौहार्दपूर्ण हैं या पायथन का उपयोग नहीं कर रहे हैं?

    सौहार्दपूर्ण संख्याएं दो अलग-अलग संख्याएं हैं जो इतनी संबंधित हैं कि प्रत्येक के उचित भाजक का योग दूसरी संख्या के बराबर है। (किसी संख्या का उचित भाजक उस संख्या के अलावा उस संख्या का एक धनात्मक गुणनखंड होता है। उदाहरण के लिए, 6 के उचित भाजक 1, 2 और 3 हैं।) पायथन में, आप इनमें से प्रत्येक का योग लेकर