Skip to content

Commit 908914e

Browse files
committed
More descriptive variable names
1 parent bc9f738 commit 908914e

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

project_euler/problem_075/sol1.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,24 @@ def solution(limit: int = 1500000) -> int:
3535
6
3636
>>> solution(1000)
3737
112
38+
>>> solution(50000)
39+
5502
40+
41+
Solution: we generate all pythagorean triples using Euclid's formula and
42+
keep track of the frequencies of the perimeters.
43+
Reference: https://en.wikipedia.org/wiki/Pythagorean_triple#Generating_a_triple
3844
"""
39-
freqs: DefaultDict = defaultdict(int)
40-
m = 2
41-
while 2 * m * (m + 1) <= limit:
42-
for n in range((m % 2) + 1, m, 2):
43-
if gcd(m, n) > 1:
45+
frequencies: DefaultDict = defaultdict(int)
46+
euclid_m = 2
47+
while 2 * euclid_m * (euclid_m + 1) <= limit:
48+
for euclid_n in range((euclid_m % 2) + 1, euclid_m, 2):
49+
if gcd(euclid_m, euclid_n) > 1:
4450
continue
45-
perim = 2 * m * (m + n)
46-
for p in range(perim, limit + 1, perim):
47-
freqs[p] += 1
48-
m += 1
49-
return sum(1 for v in freqs.values() if v == 1)
51+
primitive_perimeter = 2 * euclid_m * (euclid_m + euclid_n)
52+
for perimeter in range(primitive_perimeter, limit + 1, primitive_perimeter):
53+
frequencies[perimeter] += 1
54+
euclid_m += 1
55+
return sum(1 for frequency in frequencies.values() if frequency == 1)
5056

5157

5258
if __name__ == "__main__":

0 commit comments

Comments
 (0)