Count Primes

Problem

Given an integer n, return the number of prime numbers that are strictly less than n.

Example 1:

Input: n = 10
Output: 4
Explanation: There are 4 prime numbers less than 10, they are 2, 3, 5, 7.

Example 2:

Input: n = 0
Output: 0

Example 3:

Input: n = 1
Output: 0

Constraints:

  • 0 <= n <= 5 * 106

Solution

I will walk out of any interview that wants me to implement or derive the Sieve of Eratosthenes.

Naive solution:

class Solution {
    public int countPrimes(int n) {
        var c = 0;
        var l = new ArrayList<Integer>();
        for (int i = 2; i < n; i++) {
            if (isPrime(i, l)) {
                c += 1;
                l.add(i);
            }
        }
        return c;
    }

    public boolean isPrime(int n, List<Integer> l) {
        var max = (int) Math.sqrt(n);

        for (var k : l) {
            if (k > max) {
                break;
            }
            if (n % k == 0) {
                return false;
            }
        }
        return true;
    }
}

Recent posts from blogs that I like

Reading Visual Art: 183 Sewing for a purpose

Sewing for Garibaldi's redshirts, the flag of a castle, Sir Lancelot, fishermen and sailors, Pentecost costumes, and other purposes.

via The Eclectic Light Company

DeepSeek-R1 and exploring DeepSeek-R1-Distill-Llama-8B

via Simon Willison

FOSDEM '25 protest

Last week, I wrote to object to Jack Dorsey and his company, Block, Inc., being accepted as main track speakers at FOSDEM, and proposed a protest action in response. FOSDEM issued a statement about our plans on Thursday. Today, I have some updates for you regarding the planned action. I would like t...

via Drew DeVault