Module for working with prime numbers written in Cython.
This is just a toy project to try out Cython.
# pip install cyprimes
To install CyPrimes a C-compiler (e.g. GCC), which must support ISO C99, is required.
Returns True
if the number
is prime. Because it uses the C-type unsigned long long (C99)
for number
it raises a ValueError
if number < 0
or number > cyprimes.max_ulong
. It raises
a TypeError
if number
is not an integer.
Returns the next prime number after number
.
Returns the previous prime number before number
.
Returns a tuple
with all prime numbers in the closed interval [start
, end
].
This class uses the Sieve of Eratosthenes
to find all prime numbers up to limit
.
An instance of this class supports the len and sys.getsizeof functions, the in and == operators,
subscription (with integer indexes and slices), is iterable, and can be pickled. Two Primes objects are
considered equal if they contain the same prime numbers.
A TypeError
will be raised if limit
is not an integer.
Methods: All methods raise TypeError
s if their parameters are not integers and ValueError
s
if they are out of range.
-
index(number)
: Returns the index ofnumber
. RaisesValueError
ifnumber
is not prime. -
next(number)
: Returns the next prime number afternumber
orNone
if their is none in the given range. -
previous(number)
: Returns the previous prime number beforenumber
orNone
if their is none in the given range. -
between(start, end)
: Returns atuple
with all prime numbers in the closed interval [start
,end
].
Although this class uses a bitarray for the sieve, be carefull not to run out of memory:
limit | size |
---|---|
100 | 7 B |
1 000 | 63 B |
10 000 | 625 B |
100 000 | 6 KiB |
1 000 000 | 61 KiB |
10 000 000 | 610 KiB |
100 000 000 | 6 MiB |
1 000 000 000 | 60 MiB |
10 000 000 000 | 596 MiB |
100 000 000 000 | 6 GiB |
1 000 000 000 000 | 58 GiB |
2022-04-13 (0.7.6)
- Now works with Python 3.10
2021-11-29 (0.7.5)
- Fix method Primes.__eq__()
2021-06-03 (0.7.4)
- Bugfix: should now work correctly on 32-bit systems
2020-12-31 (0.7.3)
- No changes
2020-07-28 (0.7.2)
- Correct version in generated C code
2020-07-28 (0.7.1)
- Add checks to avoid overflow
2020-07-27 (0.7.0)
- Add functions next_prime(), previous_prime(), and primes_between()
2020-06-25 (0.6.0)
- Add methods __eq__(), __hash__(), __sizeof__() ,and __repr__() to class Primes
2020-06-15 (0.5.0)
- Add methods next(), previous(), and between() to class Primes
- Add tests
2020-06-03 (0.4.3)
- Fix: README again 😊
2020-06-03 (0.4.2)
- Fix: README
2020-06-03 (0.4.1)
- Fix: Primes() and is_prime() now raise TypeErrors if the parameter is not an integer
- Fix: Primes.__reversed__() now works correct
2020-06-02 (0.4.0)
- First public release