hm eine frage am rande
gibt primTeilerListe(zahl) eine liste aus die alle primzahlen beinhaltet
die bis zu eurer zahl gehn?
wenn das so sein sollte, habe ich die theorie, dass eure funktionen eventuell nicht das machen, was ihr wollt.
probiert mal die zahl 14 aus. ich glaub bei euch kommt 2 und 3 als ergebnis in eurer liste.
korrekt wär doch 2 und 7, gell?
bei 8 oder 16 sollte das auch der fall sein
lieg ich falsch, tut es mir leid eure zeit sinnlos verschwendet zu haben
lg
Pablo
edit:
Code: Alles auswählen
def primzahlen(x):
prim = range(2,x)
for i in xrange(2,int((x-1)**0.5+1)):
if i in prim: # i ist in der liste also
for j in xrange(i*2,x,i): #alle vielfachen von i sind keine primzahlen
if j in prim: #wenn j noch in der Liste,
prim.remove(j) # aus der Liste loeschen
print prim
return prim
def primfaktorzerlegung(zahl):
pzahlen = primzahlen(zahl)
anfangswert = zahl
zerlegt = list()
while zahl > 1:
for i in pzahlen:
if zahl % i == 0:
zerlegt.append(i)
zahl /= i
faktoren = sorted(zerlegt)
print faktoren
ausgabe(faktoren,anfangswert)
print primfaktorzerlegung(16)
>pythonw -u "test.py"
[2, 3, 5, 7, 11, 13] #primzahlen die durch iteriert werden
[2, 2, 2, 2] # liste aller primfaktoren
16=2*2*2*2 # Gleichung
>Exit code: 0
hab mich jetzt an eurem code orientiert,
ist jetzt auch nur nen erster quickhack
sprich da ist wahrscheinlich noch einiges zu optimieren
als kleine weitere anregung:
man könnte das ergebnis zum beispiel in der kanonischen
primfaktorzerlegung ausgeben:
für die zahl 16 wär die ausgabe: 2^4
für die zahl 144 wär die ausgabe: (2^4)*(3^2)