मान लीजिए कि हमारे पास सकारात्मक मूल्यों के साथ एक सरणी संख्या है। हमें अंकों के सभी गैर-रिक्त अनुक्रमों के बीच विभिन्न जीसीडी की संख्या का पता लगाना है। जैसा कि हम जानते हैं कि संख्याओं के अनुक्रम का GCD सबसे बड़ा मान है जो सभी संख्याओं को क्रम में समान रूप से विभाजित करता है।
इसलिए, यदि इनपुट nums =[4,6,18] जैसा है, तो आउटपुट 4 होगा क्योंकि gcd([4]) =4, gcd([6]) =6, gcd([18]) =18 gcd([4,6]) =2, gcd([4,18]) =2, gcd([6,18]) =6, gcd([4,6,18]) =2 इसलिए सभी संख्याएँ हैं [ 4,6,18,2], 4 अंक हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
टी :=अधिकतम अंक + 1
-
nums :=एक नया सेट जिसमें सभी अलग-अलग अंक शामिल हैं
-
उत्तर :=0
-
x के लिए 1 से T-1 की श्रेणी में, करें
-
जी:=0
-
x से T-1 की श्रेणी में y के लिए, प्रत्येक चरण में x द्वारा अपडेट करें, करें
-
अगर y अंकों में है, तो
-
जी:=जीसीडी (जी, वाई)
-
-
अगर g, x के समान है, तो
-
लूप से बाहर आएं
-
-
-
अगर g, x के समान है, तो
-
उत्तर:=उत्तर + 1
-
-
-
वापसी उत्तर
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें
from math import gcd def solve(nums): T = max(nums) + 1 nums = set(nums) ans = 0 for x in range(1, T): g = 0 for y in range(x, T, x): if y in nums: g = gcd(g, y) if g == x: break if g == x: ans += 1 return ans nums = [4,6,18] print(solve(nums))
इनपुट
[4,6,18]
आउटपुट
4