【数学】 204. 计数质数

204. 计数质数

解题思路

  • 创建了一个Solution类。
  • 定义了一个公共方法countPrimes,接受一个整数参数n。
  • 创建了一个长度为n的布尔数组isPrime,用于标记每个数是否为质数。初始时,假设所有数都是质数。
  • 通过Arrays.fill将isPrime数组初始化为全部为true,表示所有数都是质数。
  • 使用两个嵌套的for循环来遍历数字,并标记非质数。外层循环从2开始直到ii小于n为止,内层循环从ii开始,以i的步长遍历,将所有i的倍数标记为非质数。
  • 计算标记为质数的数量,即统计isPrime数组中值为true的元素个数,得到质数的总数。
  • 返回质数的总数。
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] == true){
                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] == true){
                count++;
            }
        }

        return count;
    }
}

你可能感兴趣的:(#,Leetcode,算法)