-
Notifications
You must be signed in to change notification settings - Fork 4
/
Solution.js
59 lines (54 loc) · 1.29 KB
/
Solution.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/**
*
* 第一版
*
* @param {number} L
* @param {number} R
* @return {number}
*/
// var countPrimeSetBits = function(L, R) {
// var set = 0, count = 0, i, tmp, j, check = true;
// for(i = L; i <= R; i++) {
// set = 0;
// check = true;
// tmp = i;
// while (tmp > 0) {
// if (tmp % 2 === 1) {
// set++;
// }
// tmp = Math.floor(tmp / 2);
// }
// for(j = 2; j < set; j++) {
// if (set % j === 0) {
// check = false;
// break;
// }
// }
// if (check && set !== 1) count++;
// }
// return count;
// };
/**
*
* 由于取值范围 10^6 < 2^20, 所以可以枚举出可能的素数
*
* @param {number} L
* @param {number} R
* @return {number}
*/
var countPrimeSetBits = function(L, R) {
var set = 0, count = 0, i, tmp, j;
for(i = L; i <= R; i++) {
set = 0;
check = true;
tmp = i;
while (tmp > 0) {
if (tmp % 2 === 1) {
set++;
}
tmp = Math.floor(tmp / 2);
}
if (set === 2 || set === 3 || set === 5 || set === 7 || set === 11 || set === 13 || set === 17 || set === 19) count++;
}
return count;
};