Giả sử chúng ta có hai số nguyên L và R, chúng ta phải tìm số lượng các số trong phạm vi [L, R] (bao gồm cả) có số nguyên tố các bit đặt ở dạng nhị phân của chúng.
Vì vậy, nếu đầu vào là L =6 và R =10, thì đầu ra sẽ là 4, vì có 4 số 6 (110), 7 (111), 9 (1001), 10 (1010), tất cả đều có số nguyên tố số bit đã đặt.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- số lượng:=0
- đối với j trong phạm vi từ L đến R, thực hiện
- nếu số bit đã đặt của j là [2,3,5,7,11,13,17,19] thì
- count:=count + 1
- số lần trả lại
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
class Giải pháp:def countPrimeSetBits (self, L, R):def popcount (i):return bin (i) [2:]. count ('1') count =0 cho j trong phạm vi (L, R + 1):if popcount (j) in [2,3,5,7,11,13,17,19]:count + =1 return countob =Solution () print (ob.countPrimeSetBits (6,10))Đầu vào
6,10Đầu ra
4