-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path14.py
43 lines (31 loc) · 956 Bytes
/
14.py
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
35
36
37
38
39
40
41
42
43
# The following iterative sequence is defined for the set of positive integers:
# n n/2 (n is even)
# n 3n + 1 (n is odd)
# Using the rule above and starting with 13,
# we generate the following sequence:
# 13 40 20 10 5 16 8 4 2 1
# It can be seen that this sequence (starting at 13 and finishing at 1)
# contains 10 terms. Although it has not been proved yet (Collatz Problem),
# it is thought that all starting numbers finish at 1.
# Which starting number, under one million, produces the longest chain?
# NOTE: Once the chain starts the terms are allowed to go above one million.
import time
t1 = time.time()
def total_stopping_time(n):
t = 0
while n != 1:
t += 1
if n % 2:
n = 3 * n + 1
else:
n = n / 2
return t
mx = 0
num = 0
for i in range(1, 1000000):
t = total_stopping_time(i)
if t > mx:
mx = t
num = i
print mx, num
print time.time() - t1