-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathe14.py
More file actions
33 lines (32 loc) · 1.09 KB
/
e14.py
File metadata and controls
33 lines (32 loc) · 1.09 KB
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
# Project Euler: Problem 14
# Longest Collatz sequence
#
# 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 notbeen 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.
#
# Answer: 837,799
def collatz():
sequ = {}
keyMax = 0
valueMax = 0
for i in range(2, 1000000):
count = 1
n = i
while n != 1:
if n % 2 == 0:
n = n / 2
else:
n = n * 3 + 1
count += 1
if count > valueMax:
valueMax = count
keyMax = i
return keyMax, valueMax