ধরুন আমাদের দুটি পূর্ণসংখ্যা L এবং R আছে, আমাদের পরিসরে সংখ্যার গণনা বের করতে হবে [L, R] (অন্তর্ভুক্ত) তাদের বাইনারি আকারে সেট বিটের মৌলিক সংখ্যা রয়েছে।
সুতরাং, যদি ইনপুটটি L =6 এবং R =10 এর মত হয়, তাহলে আউটপুট হবে 4, কারণ 4টি সংখ্যা 6(110), 7(111), 9(1001), 10(1010), সবকটিরই প্রাইম রয়েছে। সেট বিটের সংখ্যা।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- গণনা :=0
- L থেকে R রেঞ্জের মধ্যে j এর জন্য, করুন
- যদি 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