jukaukor

Eratosthes_sieve_numpy.py

Mar 24th, 2019
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.93 KB | None | 0 0
  1. # Eratostheneen seula käyttäen numpy boolean arrays
  2. # Juhani Kaukoranta 24.3.2019
  3. import numpy as np
  4. import time
  5.  
  6. def Sieve(n):
  7. # palauttaa lukua n pienemmät alkuluvut
  8. # aluksi kaikki nimetään alkuluvuiksi = True:
  9. # (kokonaislukuvastaavuus 0 = False, 1 = True)
  10. primes = np.ones(n,dtype=bool)
  11. # poistetaan alkulukujen joukosta 0 and 1:
  12. primes[:2] = False
  13. # poistetaan monikerrat:
  14. nmax = int(np.sqrt(len(primes)))
  15. for i in range(2, nmax):
  16. primes[2*i::i] = False
  17. # nonzero-sisältöiset ovat True eli alkulukuja
  18. return(np.flatnonzero(primes))
  19.  
  20. high = int(input("Anna kokonaisluku, jota pienemmät alkuluvut lasketaan "))
  21. # lasketaan laskentaan kuluva aika
  22. time0 = time.perf_counter()
  23. alkuluvut = Sieve(high)
  24. time1 = time.perf_counter()
  25. print("Aikaa kului ",time1-time0," sekuntia")
  26. print("Lukua ",high," pienempiä alkulukuja ",len(alkuluvut)," kpl")
  27. print(alkuluvut)
Advertisement
Add Comment
Please, Sign In to add comment