Solution to problem 57
This commit is contained in:
parent
680bf57a26
commit
b4c6664646
50
src/Python/Problem057.py
Normal file
50
src/Python/Problem057.py
Normal file
@ -0,0 +1,50 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Created on 09 Oct 2021
|
||||
|
||||
@author: David Doblas Jiménez
|
||||
@email: daviddoji@pm.me
|
||||
|
||||
Solution for problem 57 of Project Euler
|
||||
https://projecteuler.net/problem=57
|
||||
"""
|
||||
|
||||
from fractions import Fraction
|
||||
from utils import timeit
|
||||
|
||||
|
||||
@timeit("Problem 57")
|
||||
def compute():
|
||||
"""
|
||||
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:
|
||||
|
||||
1 + 1/2 = 3/2 = 1.5
|
||||
1 + 1/2+1/2 = 7/5 = 1.4
|
||||
1 + 1/2+1/2+1/2 = 17/12 = 1.41666...
|
||||
1 + 1/2+1/2+1/2+1/2 = 41/29 = 1.41379...
|
||||
|
||||
The next three expansions are 99/70, 239/169, and 577/408, but the eighth
|
||||
expansion, 1393/985, 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?
|
||||
"""
|
||||
|
||||
ans = 0
|
||||
f = Fraction(1, 2)
|
||||
for i in range(1000):
|
||||
f = 1 / (2 + f)
|
||||
result = 1 + f
|
||||
if len(str(result.numerator)) > len(str(result.denominator)):
|
||||
ans += 1
|
||||
|
||||
return ans
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
print(f"Result for Problem 57: {compute()}")
|
Loading…
x
Reference in New Issue
Block a user