"""
#Exercise 1
def poly(xs,xe,N):
	#Erzeugung eines arrays mit N werten zwischen xs und xe.
	#Note: Einfacher mit der Funktion linspace aus dem Numpy Modul, welches
	#      wir spaeter noch kennenlernen
	poly_n = int(raw_input("Waehle Grad des Polynoms: "))
	xstep  = float((xe-xs))/N
	xarray = []
	yarray = []
	for i in range(N):
		xval=xs+i*xstep
		xarray.append(xval)
		#Erzeugung eines Polynoms der Form x**0 + x**1 + ... + x**N
		yval=0
		for j in range(poly_n+1):
			yval+=xval**j
		yarray.append(yval)
	return xarray, yarray

# Exercise 2
def save(xarray, yarray, filename="data.txt"): 
	#filename ist ein 'Default-Argument', d.h. dass die variable 'filename'
        #automatisch auf "data.txt" gesetzt wird. Beim Funktionsaufruf kann
	#'filename' jedoch auf beliebige Werte gesetzt werden, indem man
	#das Argument explizit angibt.
	#BEISPIEL:
	#	save(xarray,yarray) #filename wird auf den Default Wert gesetzt
	#	save(xarray,yarray,filename="save_datei.txt") #filename wird auf "save_datei.txt" gesetzt
	save_file=open(filename,"w")
	save_file.write("x y\n")
	for index, xval in enumerate(xarray):
		#Enumerate ist sehr praktisch, wenn man gleichzeitig den Laufindex und Wert einer
		#Sequenz benoetigt. Siehe help(enumerate) fuer Details.
		#Ein aequivalenter Ausdruck waere: 'for index in range( len(xarray) ):'
		#                                   	xval=xarray[index]
		yval=yarray[index]
		line_string = "%4.3f %4.3f\n"%(xval,yval)
		save_file.write(line_string)
	save_file.close()

#Exercise 3
def load(filename="data.txt"):
	xarray,yarray=[],[]
	load_file=open(filename,"r")
	load_file.readline()        #Lesen des Headers
	for line in load_file:      #Iteration ueber die Zeilen innerhalb der Datei
		rows=line.split()
		xval=float(rows[0])
		yval=float(rows[1])
		xarray.append(xval)
		yarray.append(yval)
	load_file.close()
	return xarray,yarray
	

x,y=poly(0,10,5)
print x
print y
save(x,y)
x,y=load()
print x
print y
"""
#Zusatzuebung
def primes(MIN=0,N=0,STEP=1,debug=False):
	#Primzahlen berechnung mittels Sieb von Eratostenes
	isprime=[]
	counter=STEP-1
	isprime=[True]*N
	for zahl in range(2,N):
		if isprime[zahl]==True:
			for multiple in range(zahl*zahl,N,zahl):
				isprime[multiple]=False
			if zahl>MIN:
				counter+=1
				if not counter%STEP:
					yield zahl
primzahlen=primes(10,100)
print primzahlen.next()
print primzahlen.next()
print primzahlen.next()
