48 lines
1.7 KiB
Python
48 lines
1.7 KiB
Python
# primes.py
|
|
from math import sqrt, ceil
|
|
|
|
|
|
def get_primes(n):
|
|
"""Calculate a list of primes up to n (included). """
|
|
primelist = []
|
|
for candidate in range(2, n + 1):
|
|
is_prime = True
|
|
root = ceil(sqrt(candidate)) # division limit
|
|
for prime in primelist: # we try only the primes
|
|
if prime > root: # no need to check any further
|
|
break
|
|
if candidate % prime == 0:
|
|
is_prime = False
|
|
break
|
|
if is_prime:
|
|
primelist.append(candidate)
|
|
return primelist
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
def test():
|
|
primes = get_primes(10**3)
|
|
primes2 = [
|
|
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43,
|
|
47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103,
|
|
107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163,
|
|
167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227,
|
|
229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281,
|
|
283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353,
|
|
359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421,
|
|
431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487,
|
|
491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569,
|
|
571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631,
|
|
641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
|
|
709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773,
|
|
787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857,
|
|
859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937,
|
|
941, 947, 953, 967, 971, 977, 983, 991, 997
|
|
]
|
|
return primes == primes2
|
|
|
|
print(test())
|
|
|
|
print(get_primes(100))
|