Nice solver! I did optimize the sieve a little...
N = 100000 primes = [False, True] * N // 2 for i in range(3, N, 2):
if primes[i]:
k = i ** 2
while k < N:
primes[k] = False
k += i * 2