I'm trying to find all prime divisors of a number. I'm trying to do it without passing an empty list as a parameter.
I'm able to call function podz without empty list parameter, but the result is incorrect - that's the 1st question - why? I get the correct result in podzb function, but it is necessary to provide the empty list parameter.
The code:
def podz(x, lista = ()):
# xa = []
lis = list(lista)
# lis = list(lista) # czemu to psuje wynik? jak odpalić krok po kroku?
# print(lis)
for i in range(2, x + 1):
# print(f'x: {x}')
# print(f'i: {i}')
# print(f'lis: {lis}')
if x % i == 0:
lis.append(i)
# print(f'lis2: {lis}')
podz(int(x / i), lis)
break
return(lis)
def podzb(x, lista = ()):
# xa = []
lis = lista
# lis = list(lista) # czemu to psuje wynik? jak odpalić krok po kroku?
# print(lis)
for i in range(2, x + 1):
# print(f'x: {x}')
# print(f'i: {i}')
# print(f'lis: {lis}')
if x % i == 0:
lis.append(i)
# print(f'lis2: {lis}')
podzb(int(x / i), lis)
break
return(lis)
a = podz(50, [])
print(f'a: {a}')
aa = podz(50)
print(f'aa: {aa}')
a2 = podzb(50, [])
print(f'a2: {a2}')
# aa = podzb(50) #this causes: AttributeError: 'tuple' object has no attribute 'append'
# print(f'aa: {aa}')