#!/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()}")