How to find all the factors of a number in Python?

Sometimes, we want to find all the factors of a number in Python.

In this article, we’ll look at how to find all the factors of a number in Python.

How to find all the factors of a number in Python?

To find all the factors of a number in Python, we can use the functools module.

For instance, we write:

from functools import reduce


def factors(n):
    return set(
        reduce(list.__add__, ([i, n // i]
                              for i in range(1,
                                             int(n**0.5) + 1) if n % i == 0)))


print(factors(50))

We define the factors function which takes the number n to get the factors from.

In the function, we call reduce with list.__add__ as the function to call to to add the factors into a list.

Then we compute the factors with ([i, n//i] for i in range(1, int(n**0.5) + 1) if n % i == 0) to compute the factors by getting all the numbers i that can divide n evenly.

Finally, we call set to remove the duplicates from the list returned by reduce.

Therefore, we should see {1, 2, 5, 10, 50, 25} from the print output.

Conclusion

To find all the factors of a number in Python, we can use the functools module.