File tree 1 file changed +33
-3
lines changed
project_euler/problem_073
1 file changed +33
-3
lines changed Original file line number Diff line number Diff line change 18
18
19
19
from math import gcd
20
20
21
+ def slow_solution (max_d : int = 12_000 ) -> int :
22
+ """
23
+ Returns number of fractions lie between 1/3 and 1/2 in the sorted set
24
+ of reduced proper fractions for d ≤ max_d
25
+
26
+ >>> slow_solution(4)
27
+ 0
28
+
29
+ >>> slow_solution(5)
30
+ 1
31
+
32
+ >>> slow_solution(8)
33
+ 3
34
+ """
35
+
36
+ fractions_number = 0
37
+ for d in range (max_d + 1 ):
38
+ for n in range (d // 3 + 1 , (d + 1 ) // 2 ):
39
+ if gcd (n , d ) == 1 :
40
+ fractions_number += 1
41
+ return fractions_number
21
42
22
43
def solution (max_d : int = 12_000 ) -> int :
23
44
"""
@@ -36,9 +57,18 @@ def solution(max_d: int = 12_000) -> int:
36
57
37
58
fractions_number = 0
38
59
for d in range (max_d + 1 ):
39
- for n in range (d // 3 + 1 , (d + 1 ) // 2 ):
40
- if gcd (n , d ) == 1 :
41
- fractions_number += 1
60
+ if d % 2 == 0 :
61
+ if (d // 3 + 1 ) % 2 == 0 :
62
+ n_start = d // 3 + 2
63
+ else :
64
+ n_start = d // 3 + 1
65
+ for n in range (n_start , (d + 1 ) // 2 , 2 ):
66
+ if gcd (n , d ) == 1 :
67
+ fractions_number += 1
68
+ else :
69
+ for n in range (d // 3 + 1 , (d + 1 ) // 2 ):
70
+ if gcd (n , d ) == 1 :
71
+ fractions_number += 1
42
72
return fractions_number
43
73
44
74
You can’t perform that action at this time.
0 commit comments