मान लीजिए कि हमारे पास आकार n का अनुक्रम संख्या है। हमें अंकों के बाद के अधिकतम आकार का पता लगाना है जिसमें प्रत्येक जोड़ी (p, q) एक अच्छी जोड़ी है? एक पैट को अच्छा जोड़ा कहा जाता है यदि और केवल यदि वह इनमें से कम से कम एक शर्त रखता है:1. पी के विशिष्ट अभाज्य भाजक की संख्या की समता बी के बराबर है। उदाहरण के लिए, मान 18 में दो अलग-अलग अभाज्य भाजक हैं:2 और 3. 2. p के सभी धनात्मक भाजक के योग की समता q के समान है।
इसलिए, यदि इनपुट nums =[2,3,6,8] जैसा है, तो आउटपुट 3
होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- n :=अंकों का आकार
- तीन खाली सूचियों को परिभाषित करें cnt, कुल, परिणाम
- प्रत्येक i के लिए अंकों में, करें
- गिनती:=0, कुल:=0
- प्राइम:=एक नई सूची
- प्रत्येक j के लिए अंकों में, करें
- अगर (j mod k सभी k रेंज 2 से j के लिए) सत्य है, तो
- प्राइम के अंत में j डालें
- अगर (j mod k सभी k रेंज 2 से j के लिए) सत्य है, तो
- प्राइम में प्रत्येक j के लिए, करें
- अगर i mod j 0 है, तो
- गिनती :=गिनती + 1
- अगर i mod j 0 है, तो
- अगर गिनती सम है, तो
- cnt के अंत में 'विषम' डालें
- अन्यथा,
- cnt के अंत में 'सम' डालें
- जे के लिए 1 से i की श्रेणी में, करें
- यदि i mod j 0 के समान है, तो
- कुल:=टोट + जे
- यदि i mod j 0 के समान है, तो
- यदि योग विषम है, तो
- कुल के अंत में 'विषम' डालें
- अन्यथा,
- कुल के अंत में 'सम' डालें
- मैं के लिए 0 से n-2 की सीमा में, करते हैं
- जे के लिए i+1 से n-1 की श्रेणी में, करें
- यदि cnt[i] cnt[j] के समान है या कुल[i] कुल [j] के समान है, तो
- नतीजे डालें[i] परिणाम के अंत में
- यदि j, n-2 के समान है, तो
- नतीजे डालें[j] परिणाम के अंत में
- यदि cnt[i] cnt[j] के समान है या कुल[i] कुल [j] के समान है, तो
- जे के लिए i+1 से n-1 की श्रेणी में, करें
- परिणाम:=परिणाम से एक नए सेट से एक नई सूची
- परिणाम का वापसी आकार
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(nums): n = len(nums) cnt = [] total = [] result = [] for i in nums: count = 0 tot = 0 prime = [] for j in nums: if all(j % k for k in range(2, j)) == True: prime.append(j) for j in prime: if i % j == 0: count += 1 if count % 2: cnt.append('odd') else: cnt.append('even') for j in range(1,i+1): if i % j == 0: tot += j if tot % 2: total.append('odd') else: total.append('even') for i in range(n-1): for j in range(i+1, n): if cnt[i] == cnt[j] or total[i] == total[j]: result.append(nums[i]) if j == n-1: result.append(nums[j]) result = list(set(result)) return len(result) nums = [2,3,6,8] print(solve(nums))
इनपुट
15, 3, 8
आउटपुट
3