Source code for packagename.example_mod

__all__ = ['primes', 'do_primes']


[docs]def primes(imax): """Returns prime numbers up to ``imax``. Parameters ---------- imax : int The number of primes to return. This should be less or equal to 10000. Returns ------- result : list The list of prime numbers. Raises ------ ValueError Invalid ``imax``. Examples -------- >>> from packagename import primes >>> primes(2) [2, 3] """ p = list(range(10000)) result = [] k = 0 n = 2 if imax > 10000: raise ValueError("imax should be <= 10000") while len(result) < imax: i = 0 while i < k and n % p[i] != 0: i = i + 1 if i == k: p[k] = n k = k + 1 result.append(n) if k > 10000: # pragma: no cover break n = n + 1 return result
[docs]def do_primes(n, usecython=False): """Returns prime numbers up to ``n``. Parameters ---------- n : int The number of primes to return. This should be less or equal to 10000. usecython : bool If `True`, use Cython implementation. Returns ------- result : list The list of prime numbers. Raises ------ NotImplementedError Cython implementation unavailable. See Also -------- primes Examples -------- >>> from packagename import do_primes >>> do_primes(2) [2, 3] """ if usecython: raise NotImplementedError( "This template does not have the example C code included.") else: # Using pure python primes return primes(n)
def main(args=None): """Driver for command line interface.""" import argparse from time import time parser = argparse.ArgumentParser(description='Process some integers.') parser.add_argument('-c', '--use-cython', dest='cy', action='store_true', help='Use the Cython-based Prime number generator.') parser.add_argument('-t', '--timing', dest='time', action='store_true', help='Time the Prime number generator.') parser.add_argument('-p', '--print', dest='prnt', action='store_true', help='Print all of the Prime numbers.') parser.add_argument('n', metavar='N', type=int, help='Get Prime numbers up to this number.') res = parser.parse_args(args) pre = time() primes = do_primes(res.n, usecython=res.cy) post = time() print(f'Found {len(primes)} prime numbers') print(f'Largest prime: {primes[-1]}') if res.time: print(f'Running time: {post - pre} s') if res.prnt: print(f'Primes: {primes}')