मान लीजिए कि हमारे पास दो पूर्णांक L और R हैं, हमें श्रेणी [L, R] (समावेशी) में संख्याओं की संख्या ज्ञात करनी है, जिनके बाइनरी रूप में सेट बिट्स की एक अभाज्य संख्या है।
इसलिए, यदि इनपुट एल =6 और आर =10 की तरह है, तो आउटपुट 4 होगा, क्योंकि 4 नंबर हैं 6(110),7(111),9(1001),10(1010), सभी में प्राइम है सेट बिट्स की संख्या।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- गिनती :=0
- जे के लिए एल से आर श्रेणी में, करें
- यदि j का सेट बिट काउंट [2,3,5,7,11,13,17,19] में है, तो
- गिनती :=गिनती + 1
- वापसी की संख्या
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def countPrimeSetBits(self, L, R): def popcount(i): return bin(i)[2:].count('1') count = 0 for j in range(L,R+1): if popcount(j) in [2,3,5,7,11,13,17,19]: count +=1 return count ob = Solution() print(ob.countPrimeSetBits(6,10))
इनपुट
6,10
आउटपुट
4