Eratosthenes' sil i python
Posted: 04/08-2014 23:21
				
				Hei, det er en liten ting jeg lurer på. Nedenfor er det en kode, jeg skjønner hva koden gjør, men det er noen matematiske ting jeg lurer på.
1. For-løkkens grense går fra 2 til "sqrtn + 1". Men hvorfor er det til roten av n + 1 og ikke bare n+1?
2. I if-setningen står det "s[i*i:np1:1] = .... " Her bruker det "list slice" (vet ikke hav det heter på norsk, men hvofor starter det fra i*i ?
Håper dere skjønner hva jeg mener :]
			Code: Select all
def sieve(n):
    np1 = n + 1
    s = list(range(np1)) 
    s[1] = 0
    sqrtn = int(round(n**0.5))
    for i in range(2, sqrtn + 1): 
        if s[i]:
            s[i*i: np1: i] = [0] * len(range(i*i, np1, i))
    return filter(None, s)2. I if-setningen står det "s[i*i:np1:1] = .... " Her bruker det "list slice" (vet ikke hav det heter på norsk, men hvofor starter det fra i*i ?
Håper dere skjønner hva jeg mener :]