go through each number between 1 and the number input until it finds a factor and adds it to a list

Viewed 33
def factorList(num):
    listOfFactors = []
    for i in range <= num:
        if num / i == 0:
            listOfFactors.append(i)
    print(listOfFactors)  
factorList(36)      

I want the function to go through each number between 1 and the number input until it finds a factor and adds it to a list

2 Answers

range() is a function (it needs parens), and it starts at zero, rather than 1...

You seem to have tried to combine range with a while loop logic, like so

i = 1
while i <= num:
  # if ... append ... 
  i += 1

But you can do the same with list-comprehension

def factorList(num):
    return [i for i in range(1, num+1) if num % i == 0]

print(factorList(36))

Output

[1, 2, 3, 4, 6, 9, 12, 18, 36]

side-note: For factorization, you only need to loop up to the square-root of the number.

Related