-
alx..
User deleted
Salve a tutti , stavo rispolverando un po' le mie conoscenze in Python ed ho capito che non mi ricordo nulla D:
Ho cercato di implementare il Crivello di Erastotene , ma mi da il seguente errore :CITAZIONEFile "p1000.py", line 22, in <module>
print ( primes(10) )
File "p1000.py", line 13, in primes
if arr[j] % i == 0 :
IndexError: list index out of range
Il codice :CODICEdef primes(n) :
arr = [1 for i in range(0 , n+1) ]
for i in range(0,n) :
arr[i] = i
i = 2
while ( i ** 2 < n ) :
for j in range( i+1 , n ) :
if arr[j] % i == 0 :
del arr[j]
i = i + 1
return arr
print ( primes(10) ). -
meh..
User deleted
Premetto che non conosco ne Python ne come funziona il crivello. CODEdef primes (n):
result = range(0 , n + 1)
i = 2
while i ** 2 < n:
for j in range(i + 1, n + 1):
if result[j] and result[j] % i == 0:
result[j] = None
i = i + 1
return filter(None, result[2:])
print(primes(10))CODE> python lol.py
[2, 3, 5, 7]
Edited by meh. - 1/3/2012, 22:31. -
lumo.
User deleted
Premetto che non conosco ne Python ne come funziona il crivello.CODICEdef primes (n):
result = range(0 , n + 1)
i = 2
while i ** 2 < n:
for j in range(i + 1, n + 1):
if result[j] and result[j] % i == 0:
result[j] = None
i = i + 1
return filter(None, result)
print(primes(10))CODICE> python lol.py
[1, 2, 3, 5, 7]
Ma 1 non è primo !1!11!. -
.
In 2 parole (anche se probabilmente hai già guardato wiki): hai tutti i numeri dal 2 ad n; inizi a scorrere i numeri eliminando i multipli di ogni numero, ma non il numero stesso.
@lumo: secondo una mia prof si. lol.