Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Made by /u/iamaquantumcomputer
- #Preview to what output should look like: http://imgur.com/gallery/0gI8eK6
- #usage from terminal: $ python sieve.py width height
- # example used to generate linked preview: $ python sieve.py 683 384
- #relies on PIL (Python Imaging Library) to function
- from PIL import Image
- import sys
- try:
- width = int(sys.argv[1])
- height = int(sys.argv[2])
- except IndexError:
- width = 1080
- height = 768
- except ValueError:
- width = 1080
- height = 768
- def convert(num):
- x = (num-1)%width
- y = (num-1)/width
- return (x,y)
- def plot(num):
- tup = convert(num)
- x = tup[0]
- y = tup[1]
- pixdata[x,y] = (0,0,0)
- def calcsieve():
- plot(1)
- print "eliminating multiples of 2"
- for m in range(4,width*height+1,2):
- plot(m)
- #print "\tkilling " + str(m)
- for a in range(3,int((width*height)**.5)+1,1):
- coor = convert(a)
- if (pixdata[coor[0],coor[1]][0]==255):
- print "eliminating multiples of " + str(a)
- for b in range(3*a,width*height+1,2*a):
- #print "\tkilling " + str(b)
- plot(b)
- img = Image.new("RGB", (width,height), (255,255,255))
- pixdata = img.load()
- calcsieve()
- img.save("sieve.png", "PNG")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement