Ich habe vor kurzem eine Funktion in Python, die mir alle Faktoren einer beliebigen Zahl geben Sie in Python wählen. Ich möchte es jetzt ändern, um nur die Primfaktoren zu zeigen. Die Funktion, die ich zur Zeit habe, ist:Iterating wieder, Primfaktoren Schleife, Python
def prime_factors(n):
L = []
i = range(1, n+1)
for x in i:
if n % x == 0:
L.append(x)
return L
, nun die Primfaktoren zu finden, wollte ich durch L, erneut auf, und entfernen Sie alle Zahlen von L, der bei bis zu sich selbst durch irgendwelche Zahlen geteilt, der Rest wäre 0.
Also, im Wesentlichen, ich möchte nur die Liste, die ich jetzt habe, nachdem ich es angehängt habe, dann teilen Sie jeden Wert in der Liste von jeder Zahl bis zu dieser Nummer, um sicherzustellen, dass es nicht ' teilbar t durch irgendetwas mit einem Rest von 0.
ich habe versucht:
def prime_factors(n):
L = []
i = range(1, n+1)
for x in i:
if n % x == 0:
L.append(x)
for y in L:
for x in i:
if y % x == 0:
L.remove(y)
return L
Außerdem habe ich Splitting es in 2 verschiedenen Funktionen versucht ...
def prime_factors(n):
L = []
i = range(2, n)
for x in i:
if n % x == 0:
L.append(x)
return L
def prime(n):
L = prime_factors(n)
i = range(2, n)
for y in L:
for x in i:
if x % y == 0:
L.remove(x)
return L
Ich habe versucht, die Rückkehr an verschiedenen Orten platzieren, ich habe versucht, die Reihenfolge der Schleifen Spiegeln, egal was, ich kann nicht herausfinden, wie die Liste L durch eine weitere Überprüfung ausgeführt, um zu sehen, ob die Werte in ihnen teilbar sind durch 0 ...
Ihr ursprünglicher Code für die Liste der Faktoren könnte eine kürzere Schleife verwenden. Jedes Mal, wenn Sie einen Faktor 'x' finden, haben Sie auch einen zweiten Faktor' n/x' gefunden. Sie können beide zur Liste hinzufügen. Das halbiert die obere Grenze Ihrer Schleife. Wenn Sie die Faktoren in der richtigen Reihenfolge haben möchten, sortieren Sie Ihre Liste am Ende. – rossum