blob: 645d9479d926114c35d129c6261ca63cdc1e8f68 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
def primes(nb_primes: cython.int):
i: cython.int
p: cython.int[1000]
if nb_primes > 1000:
nb_primes = 1000
if not cython.compiled: # Only if regular Python is running
p = [0] * 1000 # Make p work almost like a C array
len_p: cython.int = 0 # The current number of elements in p.
n: cython.int = 2
while len_p < nb_primes:
# Is n prime?
for i in p[:len_p]:
if n % i == 0:
break
# If no break occurred in the loop, we have a prime.
else:
p[len_p] = n
len_p += 1
n += 1
# Let's copy the result into a Python list:
result_as_list = [prime for prime in p[:len_p]]
return result_as_list
|