summaryrefslogtreecommitdiff
path: root/docs/examples/tutorial/cython_tutorial/primes.py
diff options
context:
space:
mode:
Diffstat (limited to 'docs/examples/tutorial/cython_tutorial/primes.py')
-rw-r--r--docs/examples/tutorial/cython_tutorial/primes.py27
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