Funktion zum Finden von Primfaktoren überschreibt Teile ihrer Ergebnisse
Posted: 29 Dec 2024, 11:55
Ich versuche einen Algorithmus zu erstellen, der zeigt, aus welchen Primfaktoren eine Zahl besteht. Ich habe den folgenden Code erstellt (nicht optimiert), der eine Zahl in die 2 Zahlen teilt, aus denen sie besteht. Dann mache ich das, bis ich herausgefunden habe, aus welchen Basiszahlen (Primzahlen) diese Zahlen bestehen. Ich habe das Problem, dass ich die endgültige Liste ständig zurücksetze und keine globale Variable verwenden möchte.
Irgendeine Idee, wie man das richtig macht?
Die erwartete Ausgabe des folgenden Codes sollte [2, 2, 5, 7] sein, da 4 × 35 = 140, 2 × 2 = 4 und 5 × 7 = 35.
Irgendeine Idee, wie man das richtig macht?
Die erwartete Ausgabe des folgenden Codes sollte [2, 2, 5, 7] sein, da 4 × 35 = 140, 2 × 2 = 4 und 5 × 7 = 35.
Code: Select all
def is_prime(n:int) -> bool:
if n==2 or n==3:
return True
for i in range(3, n//2+1):
if n%i==0:
return False
return True
def made_of(n:int) -> list[int]:
v = []
for i in range(2, n//2+1):
for j in range(2, n//2+1):
if i*j==n:
v += [i]
v += [j]
return v
def is_prime_list(v:list[int]) -> bool:
for i in range(0, len(v)):
if is_prime(v[i])!= True:
return False
return True
def made_of_prime(v:list[int]) -> list[int]:
p = []
w = []
if is_prime_list(v)==False:
for i in range(0, len(v)):
if is_prime(v[i])==True:
w += [v[i]]
else:
p += made_of(v[i])
return made_of_prime(p)
else:
w += v
return w
return w
if __name__=="__main__":
print(made_of_prime(made_of(140)))