def eratosthenes_sieve_for(n):
if n < 2:
return []
is_composite = [False] * (n + 1)
primes = []
for i in range(2, n + 1):
if is_composite[i]:
continue
primes.append(i)
# 用for循环模拟C++的 j = i*i; j <=n; j +=i
for j in range(i * i, n + 1, i):
is_composite[j] = True
return primes