1. 程式人生 > >762. Prime Number of Set Bits in Binary Representation 二進制表示形式中的素數位數

762. Prime Number of Set Bits in Binary Representation 二進制表示形式中的素數位數

num number uri auto func href order ger xpl

Given two integers L and R, find the count of numbers in the range [L, R] (inclusive) having a prime number of set bits in their binary representation.

(Recall that the number of set bits an integer has is the number of 1s present when written in binary. For example, 21 written in binary is 10101 which has 3 set bits. Also, 1 is not a prime.)

Example 1:

Input: L = 6, R = 10
Output: 4
Explanation:
6 -> 110 (2 set bits, 2 is prime)
7 -> 111 (3 set bits, 3 is prime)
9 -> 1001 (2 set bits , 2 is prime)
10->1010 (2 set bits , 2 is prime)

Example 2:

Input: L = 10, R = 15
Output: 5
Explanation:
10 -> 1010 (2 set bits, 2 is prime)
11 -> 1011 (3 set bits, 3 is prime)
12 -> 1100 (2 set bits, 2 is prime)
13 -> 1101 (3 set bits, 3 is prime)
14 -> 1110 (3 set bits, 3 is prime)
15 -> 1111 (4 set bits, 4 is not prime)

Note:

  1. L, R will be integers L <= R in the range [1, 10^6].
  2. R - L will be at most 10000.

給定兩個整數L和R,找到在其二進制表示中具有設置位素數的範圍[L,R](包含)範圍內的數字的計數。 (回想一下,一個整數所設置的位數是用二進制寫的時候存在的1的個數,例如,用二進制寫的21是10101,它有3個設置位,而且1不是素數。
  1. /**
  2. * @param {number} L
  3. * @param {number} R
  4. * @return {number}
  5. */
  6. var countPrimeSetBits = function (L, R)
    {
  7. let primes = new Set([2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]);
  8. let res = 0;
  9. while (L <= R) {
  10. let str = L.toString(2);
  11. let match = str.match(/1/g);
  12. if (match && primes.has(match.length)) {
  13. res++;
  14. }
  15. L++;
  16. }
  17. return res;
  18. };
  19. let res = countPrimeSetBits(10, 15);
  20. console.log(res);




來自為知筆記(Wiz)

762. Prime Number of Set Bits in Binary Representation 二進制表示形式中的素數位數