python licbza w pętli

0
lista = []

def pierwsza(y):
    lista[:] = []
    for n in range(2, y):
        for x in range(2, n):
            if n % x == 0:
                break
        else:            
            lista.append(n)
z = 9
pierwsza(z)
print(lista)
def oblicz(z):
    pierwsza(z)
    print(z)
    for l in range(1, z):
        print(l)
        if z % lista[l] == 0:
            z = z/lista[l]
            print(z)
            l = 1
oblicz(z)                


Traceback (most recent call last):
  File "C:/Python33/hej.py", line 23, in <module>
    oblicz(z)
  File "C:/Python33/hej.py", line 19, in oblicz
    if z % lista[l] == 0:
IndexError: list index out of range

Generalnie to chodzi o to, żeby w pętli liczba l się resetowała w sumie pętla mogłaby być powtórzona ale pod innym z. Wie ktoś jak to zrobić?

0

chodzi mi ogólnie o to, żeby powtórzyć petle ale na nowych liczbach, coś jak countinue tylko, żeeby nie szło dalej tylko zaczeło od nwoa już na nowych liczbach

0

Po co iterować od 1 do z skoro możesz iterować tylko po liczbach pierwszych?

def oblicz(z):
    pierwsza(z)
    print(z)
    for l in lista :
        if z % l == 0:
            z = z/l
            print(z)
0

wpisuje oblicz(9) i wychodzi 3.0 a powino 1.0

0

zapomniałeś napisać co chcesz zrobić, domyślanie się tego na podstawie błędnego kodu jest dość trudne.
Jeśli chcesz faktoryzować liczbę to: http://ideone.com/PKqROF

0

dzięki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1