Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Eratostheneen seula käyttäen numpy boolean arrays
- # Juhani Kaukoranta 24.3.2019
- import numpy as np
- import time
- def Sieve(n):
- # palauttaa lukua n pienemmät alkuluvut
- # aluksi kaikki nimetään alkuluvuiksi = True:
- # (kokonaislukuvastaavuus 0 = False, 1 = True)
- primes = np.ones(n,dtype=bool)
- # poistetaan alkulukujen joukosta 0 and 1:
- primes[:2] = False
- # poistetaan monikerrat:
- nmax = int(np.sqrt(len(primes)))
- for i in range(2, nmax):
- primes[2*i::i] = False
- # nonzero-sisältöiset ovat True eli alkulukuja
- return(np.flatnonzero(primes))
- high = int(input("Anna kokonaisluku, jota pienemmät alkuluvut lasketaan "))
- # lasketaan laskentaan kuluva aika
- time0 = time.perf_counter()
- alkuluvut = Sieve(high)
- time1 = time.perf_counter()
- print("Aikaa kului ",time1-time0," sekuntia")
- print("Lukua ",high," pienempiä alkulukuja ",len(alkuluvut)," kpl")
- print(alkuluvut)
Advertisement
Add Comment
Please, Sign In to add comment