Solution to problem 26
This commit is contained in:
parent
cd7ae13c29
commit
5b7564425a
52
src/Python/Problem026.py
Normal file
52
src/Python/Problem026.py
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Created on 11 Sep 2019
|
||||||
|
|
||||||
|
@author: David Doblas Jiménez
|
||||||
|
@email: daviddoji@pm.me
|
||||||
|
|
||||||
|
Solution for problem 26 of Project Euler
|
||||||
|
https://projecteuler.net/problem=26
|
||||||
|
"""
|
||||||
|
|
||||||
|
from utils import timeit
|
||||||
|
|
||||||
|
|
||||||
|
@timeit("Problem 26")
|
||||||
|
def compute():
|
||||||
|
"""
|
||||||
|
A unit fraction contains 1 in the numerator. The decimal representation
|
||||||
|
of the unit fractions with denominators 2 to 10 are given:
|
||||||
|
|
||||||
|
1/2 = 0.5
|
||||||
|
1/3 = 0.(3)
|
||||||
|
1/4 = 0.25
|
||||||
|
1/5 = 0.2
|
||||||
|
1/6 = 0.1(6)
|
||||||
|
1/7 = 0.(142857)
|
||||||
|
1/8 = 0.125
|
||||||
|
1/9 = 0.(1)
|
||||||
|
1/10 = 0.1
|
||||||
|
|
||||||
|
Where 0.1(6) means 0.166666..., and has a 1-digit recurring cycle.
|
||||||
|
It can be seen that 1/7 has a 6-digit recurring cycle.
|
||||||
|
|
||||||
|
Find the value of d < 1000 for which 1/d contains the longest recurring
|
||||||
|
cycle in its decimal fraction part.
|
||||||
|
"""
|
||||||
|
cycle_length = 0
|
||||||
|
number_d = 0
|
||||||
|
for number in range(3, 1000, 2):
|
||||||
|
if number % 5 == 0:
|
||||||
|
continue
|
||||||
|
p = 1
|
||||||
|
while 10**p % number != 1:
|
||||||
|
p += 1
|
||||||
|
if p > cycle_length:
|
||||||
|
cycle_length, number_d = p, number
|
||||||
|
return number_d
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
|
||||||
|
print(f"Result for Problem 26: {compute()}")
|
Loading…
x
Reference in New Issue
Block a user