Source code for hermes_instrument.example_mod
__all__ = ["primes", "do_primes"]
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.
Examples
--------
>>> from hermes_instrument.example_mod import primes
>>> primes(10)
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
"""
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:
break
n = n + 1
return result
[docs]def do_primes(n, usecython=False):
if usecython:
raise Exception("This template does not have the example C code included.")
else:
print("Using pure python primes")
return primes(n)
def main(args=None):
from astropy.utils.compat 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 Fibonacci 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, res.cy)
post = time()
print("Found {0} prime numbers".format(len(primes)))
print("Largest prime: {0}".format(primes[-1]))
if res.time:
print("Running time: {0} s".format(post - pre))
if res.prnt:
print("Primes: {0}".format(primes))