leetcode 204 計數質數
阿新 • • 發佈:2020-12-03
package com.example.lettcode.dailyexercises; /** * @Class CountPrimes * @Description 204 計數質數 * 統計所有小於非負整數 n 的質數的數量。 * <p> * 示例 1: * 輸入:n = 10 * 輸出:4 * 解釋:小於 10 的質數一共有 4 個, 它們是 2, 3, 5, 7 。 * 示例 2: * 輸入:n = 0 * 輸出:0 * <p> * 示例 3: * 輸入:n = 1 * 輸出:0 * <p> * 提示: * 0 <= n <= 5 * 106 * 雜湊 數學 * @Author * @Date 2020/12/3 **/ public class CountPrimes { public static int countPrimes(int n) { if (n <= 1) return 0; boolean[] isPrime = new boolean[n]; int res = 0; for (int i = 0; i < n; i++) { isPrime[i] = true; } for (int i = 2; i < n; i++) { if (!isPrime[i]) continue; //由於i現在是一個質數, 那麼i的平方一定不是質數,i^2 + i; i^2 + 2i也一定不是素數 for (int j = i * i; j < n; j += i) { res++; isPrime[j] = false; } } return res; } public static void main(String[] args) { int n = 10; int ans = countPrimes(n); System.out.println("CountPrimes demo01 result: " + ans); n = 0; ans = countPrimes(n); System.out.println("CountPrimes demo02 result: " + ans); n = 1; ans = countPrimes(n); System.out.println("CountPrimes demo03 result: " + ans); } }