Download code

Jump to: navigation, search

Back to Sieve_of_Eratosthenes_(Python,_arrays)

Download for Windows: single file, zip

Download for UNIX: single file, zip, tar.gz, tar.bz2

sieve.py

 1 # The authors of this work have released all rights to it and placed it
 2 # in the public domain under the Creative Commons CC0 1.0 waiver
 3 # (http://creativecommons.org/publicdomain/zero/1.0/).
 4 # 
 5 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 6 # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 7 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 8 # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 9 # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
10 # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
11 # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12 # 
13 # Retrieved from: http://en.literateprograms.org/Sieve_of_Eratosthenes_(Python,_arrays)?oldid=19211
14 
15 from numpy import *
16 
17 def sieve(n):
18   flags = zeros(n**2) + 1
19   for i in arange(2,n):
20           flags[i*i::i] = 0
21   return flatnonzero(flags)[2:]
22 
23 
24 def koskinon(n):
25   flags = resize((0,1,0,0,0,1), (n**2,))
26   put(flags, (0,2,3), 1)
27   for i in arange(5,n,2):
28       if flags[i]:
29           flags[i*i::i] = 0
30   return flatnonzero(flags)[2:]
31 
32 if __name__ == "__main__":
33         set_printoptions(edgeitems=100)
34         print sieve(100)
35         print all(koskinon(100)==sieve(100))


hijacker
hijacker
hijacker
hijacker