File: primes_cpp.pyx

package info (click to toggle)
cython 0.29.21-3
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 14,848 kB
  • sloc: python: 67,537; ansic: 14,505; cpp: 1,340; xml: 1,031; makefile: 367; lisp: 206; sed: 11; sh: 7
file content (21 lines) | stat: -rw-r--r-- 588 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# distutils: language=c++

from libcpp.vector cimport vector

def primes(unsigned int nb_primes):
    cdef int n, i
    cdef vector[int] p
    p.reserve(nb_primes)  # allocate memory for 'nb_primes' elements.

    n = 2
    while p.size() < nb_primes:  # size() for vectors is similar to len()
        for i in p:
            if n % i == 0:
                break
        else:
            p.push_back(n)  # push_back is similar to append()
        n += 1

    # Vectors are automatically converted to Python
    # lists when converted to Python objects.
    return p