Problema Python

« Older   Newer »
 
  Share  
.
  1. 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 :
    CITAZIONE
    File "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 :
    CODICE
    def 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) )
     
    Top
    .
  2. meh.
     
    .

    User deleted


    Premetto che non conosco ne Python ne come funziona il crivello.

    CODE
    def 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
     
    Top
    .
  3. lumo
     
    .

    User deleted


    CITAZIONE (meh. @ 1/3/2012, 22:10) 
    Premetto che non conosco ne Python ne come funziona il crivello.

    CODICE
    def 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!
     
    Top
    .
  4.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    CITAZIONE (meh. @ 1/3/2012, 22:10) 
    Premetto che non conosco ne Python ne come funziona il crivello.

    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
     
    Top
    .
3 replies since 1/3/2012, 21:14   62 views
  Share  
.