aboutsummaryrefslogtreecommitdiffstats
path: root/bigfactors2.py
blob: 9e515021d627b3c678e95515721f624fd6254f8b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import PIL
import math

# Problem 12 Highly divisible triangular number
# finds the first number with over 500 factors


def countfactors(num):
    factors = 0
    # we only need to know about the FIRST HALF of factors,
    # one factor implies a second
    root = int(math.ceil(math.sqrt(num)))
    divs = range(1, root)
    for d in divs:
        if(num % d == 0):
            factors += 2

    # Correction if the number is a perfect square
    if (root * root == num):
        factors -= 1
    return factors


####   MAIN #####
i = 1
k = 1
j = 0
while(k < 500):
    j += i
    k = countfactors(j)
    print(str(j) + " has " + str(k) + " factors")
    i += 1

print("Ding! Ding! {} has over 500 factors, wow!".format(j))