Skip to content

Commit 7d0d773

Browse files
author
kalpanajangra
authored
Add Project Euler Problem 71: Fixes #2695 (#2785)
1 parent e242485 commit 7d0d773

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

Diff for: project_euler/problem_71/__init__.py

Whitespace-only changes.

Diff for: project_euler/problem_71/sol1.py

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
"""
2+
Ordered fractions
3+
Problem 71
4+
https://projecteuler.net/problem=71
5+
6+
Consider the fraction n/d, where n and d are positive
7+
integers. If n<d and HCF(n,d)=1, it is called a reduced proper fraction.
8+
9+
If we list the set of reduced proper fractions for d ≤ 8
10+
in ascending order of size, we get:
11+
1/8, 1/7, 1/6, 1/5, 1/4, 2/7, 1/3, 3/8, 2/5, 3/7,
12+
1/2, 4/7, 3/5, 5/8, 2/3, 5/7, 3/4, 4/5, 5/6, 6/7, 7/8
13+
14+
It can be seen that 2/5 is the fraction immediately to the left of 3/7.
15+
16+
By listing the set of reduced proper fractions for d ≤ 1,000,000
17+
in ascending order of size, find the numerator of the fraction
18+
immediately to the left of 3/7.
19+
"""
20+
21+
22+
def solution(numerator: int = 3, denominator: int = 7, limit: int = 1000000) -> int:
23+
"""
24+
Returns the closest numerator of the fraction immediately to the
25+
left of given fraction (numerator/denominator) from a list of reduced
26+
proper fractions.
27+
>>> solution()
28+
428570
29+
>>> solution(3, 7, 8)
30+
2
31+
>>> solution(6, 7, 60)
32+
47
33+
"""
34+
max_numerator = 0
35+
max_denominator = 1
36+
37+
for current_denominator in range(1, limit + 1):
38+
current_numerator = current_denominator * numerator // denominator
39+
if current_denominator % denominator == 0:
40+
current_numerator -= 1
41+
if current_numerator * max_denominator > current_denominator * max_numerator:
42+
max_numerator = current_numerator
43+
max_denominator = current_denominator
44+
return max_numerator
45+
46+
47+
if __name__ == "__main__":
48+
print(solution(numerator=3, denominator=7, limit=1000000))

0 commit comments

Comments
 (0)