From e900cb117ec76bd13750e7292b12e3ec9ce3f70a Mon Sep 17 00:00:00 2001 From: daviddoji Date: Sat, 11 Apr 2026 16:03:17 +0200 Subject: [PATCH] Refactor for efficiency --- src/project_euler_python/problems_001_050/Problem026.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/project_euler_python/problems_001_050/Problem026.py b/src/project_euler_python/problems_001_050/Problem026.py index cc67663..708db16 100644 --- a/src/project_euler_python/problems_001_050/Problem026.py +++ b/src/project_euler_python/problems_001_050/Problem026.py @@ -37,11 +37,17 @@ def compute(): cycle_length = 0 ans = 0 + # Because denominators with factor 2 contribute only to the terminating + # part of a decimal. The repeating behavior comes from the part of the + # denominator that is coprime with 10, so evens are skipped for number in range(3, 1000, 2): if number % 5 == 0: continue p = 1 - while 10**p % number != 1: + remainder = 10 % number + while remainder != 1: + # avoid huge exponentiation + remainder = (remainder * 10) % number p += 1 if p > cycle_length: cycle_length, ans = p, number