diff options
Diffstat (limited to 'docs/examples/tutorial/cython_tutorial/primes.py')
-rw-r--r-- | docs/examples/tutorial/cython_tutorial/primes.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/docs/examples/tutorial/cython_tutorial/primes.py b/docs/examples/tutorial/cython_tutorial/primes.py new file mode 100644 index 000000000..645d9479d --- /dev/null +++ b/docs/examples/tutorial/cython_tutorial/primes.py @@ -0,0 +1,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 |