題目描述:
給定兩個整數 l 和 r ,找到閉區間 [l, r] 範圍內,計算置位位數為質數的整數個數。
(注意,計算置位代表二進位制表示中1的個數。例如 21 的二進位制表示 10101 有 3 個計算置位。還有,1 不是質數。)
示例 1:
輸入: l = 6, r = 10
輸出: 4
解釋:
6 -> 110 (2 個計算置位,2 是質數)
7 -> 111 (3 個計算置位,3 是質數)
9 -> 1001 (2 個計算置位,2 是質數)
10-> 1010 (2 個計算置位,2 是質數)
示例 2:
輸入: l = 10, r = 15
輸出: 5
解釋:
10 -> 1010 (2 個計算置位, 2 是質數)
11 -> 1011 (3 個計算置位, 3 是質數)
12 -> 1100 (2 個計算置位, 2 是質數)
13 -> 1101 (3 個計算置位, 3 是質數)
14 -> 1110 (3 個計算置位, 3 是質數)
15 -> 1111 (4 個計算置位, 4 不是質數)
注意:l, r 是 l <= r 且在 [1, 10^6] 中的整數。
r - l 的最大值為 10000。
題目分析:
第一點:質數的判斷,我使用的是篩選法,即設定布林型標記陣列flag,記錄該書組的下標對應的數字是不是質數。剛開始知道2是質數,那麼2的整數倍都不是質數,然後3的標記是true,說明它是質數,那麼3的整數倍都不是質數。以此類推
第二點:二進位制位數字是不是1的判斷,使用位移和&來加快速度。
class solution
for(int i=2;i<=32;i++)}}
int ans=0;
for(;l<=r;l++)
}if(flag[cnt]&&cnt!=1)
}return ans;
}};
762 二進位制表示中質數個計算置位(模擬)
1.問題描述 給定兩個整數 l 和 r 找到閉區間 l,r 範圍內,計算置位位數為質數的整數個數。注意,計算置位代表二進位制表示中1的個數。例如 21 的二進位制表示 10101 有 3 個計算置位。還有,1 不是質數。示例 1 輸入 l 6,r 10 輸出 4 解釋 6 110 2 個計算置位,2...
762 二進位制表示中質數個計算置位 簡單
題目 於力扣 leetcode 目錄三 實現 四 執行用時 五 部分測試用例 762.二進位制表示中質數個計算置位 說明 據題目說明 元素是 10 6 內的值,即 1000000,其二進位制中位 1 的個數最多為 20 位 建立 bucket 陣列,記錄下 20 以內質數索引上元素值為 1 遍歷陣列...
LeetCode762二進位制表示中質數個計算置位
給定兩個整數 l 和 r 找到閉區間 l,r 範圍內,計算置位位數為質數的整數個數。注意,計算置位代表二進位制表示中1的個數。例如 21 的二進位制表示 10101 有 3 個計算置位。還有,1 不是質數。示例 1 輸入 l 6,r 10 輸出 4 解釋 6 110 2 個計算置位,2 是質數 7 ...