diff --git a/57/main.py b/57/main.py new file mode 100644 index 0000000..6ae0f3f --- /dev/null +++ b/57/main.py @@ -0,0 +1,59 @@ +''' +It is possible to show that the square root of two can be expressed as an infinite continued fraction. + +By expanding this for the first four iterations, we get: + +The next three expansions are + +, + +, and + +, but the eighth expansion, + +, is the first example where the number of digits in the numerator exceeds the number of digits in the denominator. + +In the first one-thousand expansions, how many fractions contain a numerator with more digits than the denominator? +''' + +import math +import time + +def t(n, dDict): + assert n >= 0 + + if n == 0: + return 1, 1 + + num, denom = d(n-1, dDict) + return (num + denom, denom) + +def d(n, dDict): + assert n >= 0 + + if n == 0: + return 1, 2 + + if n in dDict.keys(): + return dDict[n] + + num, denom = d(n-1, dDict) + r = (denom, 2 * denom + num) + dDict[n] = r + return r + +def main(): + print("Hello, this is Patrick") + t0 = time.time() + + counter = 0 + dDict = {} + for n in range(1001): + num, denom = t(n, dDict) + if len(str(num)) > len(str(denom)): + counter += 1 + + print(counter, time.time() - t0) + +if __name__ == "__main__": + main() \ No newline at end of file