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)))