Advertisement
jukaukor

Eratosthenes.py

Mar 19th, 2019
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.03 KB | None | 0 0
  1. #Eratostheneen seula laskee alkulukuja
  2. # Juhani Kaukoranta 4.4.2019
  3. # Lähteenä erinomainen http://inventwithpython.com/cracking/
  4. import math
  5. import time
  6. # Eratostheneen seula etsii lukua sieveSize pienemmät alkuluvut
  7.  
  8. def primeSieve(sieveSize):
  9. sieve = [True] * sieveSize # merkitään kaikki alkuluvuiksi
  10. sieve[0] = False # 0 ja 1 eivät alkulukuja
  11. sieve[1] = False
  12. primes = []
  13. # poistetaan monikerrat, merkitään False
  14. for i in range(2, int(math.sqrt(sieveSize))+1):
  15. if sieve[i] == False:
  16. continue
  17.  
  18. for j in range(2*i,sieveSize,i):
  19. sieve[j] = False
  20. for i in range(2,sieveSize):
  21. if sieve[i]==True:
  22. primes.append(i)
  23. return primes
  24.  
  25. high = int(input("Anna kokonaisluku, jota pienemmät alkuluvut lasketaan "))
  26. time0 = time.perf_counter()
  27. alkuluvut = primeSieve(high)
  28. time1 = time.perf_counter()
  29. print("Laskenta-aika = ",time1-time0," sekuntia")
  30. print("alkulukuja oli ",len(alkuluvut)," kpl")
  31. print(alkuluvut)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement