Skip to content Skip to sidebar Skip to footer

Looped Nesting -- Factorising

I am trying to write a program that takes a user input, limit and prints a table to visualise all the factors of each integer ranging from 1 to the limit. Each row represents an in

Solution 1:

You should use the variable i or limit in your inner loop as well. So you will generate a limit * limit output. Also you have to iterate until limit + 1 to get full limit rows.

A detailed version:

# get a maximim number and cast it to intlimit = int(input('Maximum number to factorise: '))

# prints a header [1; limit]print" " + "".join(["%3d" % i for i in xrange(1, limit + 1)])
# outer loop: [1; limit]for i in range(1, limit + 1):
    line = '%2d ' % i  # format string row number# inner loop: [1; limit]!for j in range (1, i + 1):  # you can also set limit + 1if i % j:  # if i % != 0
            line += '-  'else:
            line += '*  'print(line)

Generates:

   1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
 1 *
 2 **
 3 *  -  *
 4 **  -  *
 5 *  -  -  -  *
 6 *  **  -  -  *
 7 *  -  -  -  -  -  *
 8 *  *  -  *  -  -  -  *
 9 *  -  *  -  -  -  -  -  *
10 **  -  -  *  -  -  -  -  *
11 *  -  -  -  -  -  -  -  -  -  *
12 **  **  -  *  -  -  -  -  -  *
13 *  -  -  -  -  -  -  -  -  -  -  -  *
14 **  -  -  -  -  *  -  -  -  -  -  -  *
15 *  -  *  -  *  -  -  -  -  -  -  -  -  -  *
16 **  -  *  -  -  -  *  -  -  -  -  -  -  -  *
17 *  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  *
18 *  **  -  -  *  -  -  *  -  -  -  -  -  -  -  -  *
19 *  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  *
20 *  *  -  *  *  -  -  -  -  *  -  -  -  -  -  -  -  -  -  *

Solution 2:

You want something like:

limit = input('Maximum number to factorise: ')
for i inrange(1,int(limit)):
    line = '{:2}:'.format(i)
    for j inrange (1,11):
        if i % j == 0:
            line += "{:4}".format('0')
        else:
            line += "{:4}".format('-')
    print(line)

Post a Comment for "Looped Nesting -- Factorising"