1、判断一个数是不是质数
private static boolean isPrime(int x) {
if (x < 2) {
return false;
}
for (int i = 2; i * i <= x; ++i) {
if (x % i == 0) {
return false;
}
}
return true;
}
2、计算质数的个数
class Solution {
public int countPrimes(int n) {
boolean[] isPrime = new boolean[n];
Arrays.fill(isPrime,true);
for(int i = 2;i*i < n;i++){
// 如果是质数,那么它的倍数都不是质数
if(isPrime[i]){
// 遍历倍数
for(int j = i * i;j < n;j += i){
isPrime[j] = false;
}
}
}
int count = 0;
for(int i = 2;i < n;i++){
if(isPrime[i]){
count++;
}
}
return count;
}
}
3、转换成质数,并且计数1的个数
int count = 0;
while(n != 0){
count++;
n = n & (n - 1);
}
return count;
或者直接使用函数:
Integer.bitCount(x):将整数x转换成二进制,并计算1的个数。
|