मान लीजिए हमारे पास दो पूर्णांक L और R हैं, हमें रेंज [L, R] (सम्मिलित) में उन संख्याओं की गिनती ज्ञात करनी है जिनके बाइनरी रूप में प्राइम संख्या में सेट बिट्स हैं।
उदाहरण के लिए, यदि इनपुट L = 6 और R = 10 है, तो आउटपुट 4 होगा, क्योंकि 4 संख्याएं 6(110), 7(111), 9(1001), 10(1010) हैं, जिनमें सभी में प्राइम संख्या में सेट बिट्स हैं।
हल करने के चरण
- count := 0
- j को L से R तक लूप करें:
- यदि j के सेट बिट्स की गिनती [2,3,5,7,11,13,17,19] में है, तो:
- count := count + 1
- यदि j के सेट बिट्स की गिनती [2,3,5,7,11,13,17,19] में है, तो:
- count वापस करें
उदाहरण
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