Factors of a number using python

This exercise is to find all the factors of a given number. Remember that a factor divides evenly into a number without leaving a remainder. We can use the modulo operator (%) to check for any remainder. The program will check all integers from 2 up to but not including the original number. To loop through those numbers we will use the for loop combined with the range() function.

number = int(input("Enter the number?"))
for i in range(2,number):
    remainder = number % i
    quotient = number // i
    print(number,"=",i,"x",quotient,"+ remainder",remainder)
    if remainder == 0:
        print("remainder is zero so",i,"is a factor")
    else:
        print("remainder is not zero so",i,"is not a factor")

Using print() in this way shows clearly the flow of the program. However, two lines of code for each potential factor is a lot to read through. To reduce the number of lines of code, print() lets us specify a different ending than a new line. If we specify end=’ ‘ then print() will end the line with a space rather than a new line significantly reducing the number of lines of output.

The following program ignores output when the number is not a factor, and displays all the factors on the same line, with a final message whether the original number is prime or composite. Instead of asking for the number to be entered, the program finds all factors for all numbers between 2 and 99 inclusive.

for number in range(2,100):
    print(number,'factors:', end=' ')
    prime=True
    for i in range(2,number):
        if number%i == 0:
            print(i, end=' ')
            prime=False
    if prime:
        print('prime')
    else:
        print('composite')
Categories: CoderDojo