File: primes_cpp.pyx

package info (click to toggle)
cython-legacy 0.29.37-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 15,328 kB
  • sloc: python: 67,540; ansic: 14,965; cpp: 1,340; xml: 1,031; makefile: 364; lisp: 206; sh: 159; sed: 11
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