# Euler Solution 75

(Difference between revisions)
 Revision as of 07:23, 22 July 2010 (view source)Althalus (Talk | contribs)← Older edit Revision as of 07:27, 22 July 2010 (view source)Althalus (Talk | contribs) (→Python by Althalus)Newer edit → Line 34: Line 34: a1,b1,c1 = a*i,b*i,c*i a1,b1,c1 = a*i,b*i,c*i while a1+b1+c1 <= target: while a1+b1+c1 <= target: - print a1,b1,c1 try: try: ls[a1+b1+c1]+=1 ls[a1+b1+c1]+=1

# Euler Problem 75

Given that L is the length of the wire, for how many values of L 1,500,000 can exactly one integer sided right angle triangle be formed?

# Solutions for Euler Problem 75

## Python by Althalus

Runtime: 53.27s

```def gcd(a,b):
while b != 0:
tmp = a % b
a = b
b = tmp
return a

def get_triple():
m,n = 1,1
while True:
m += 1
if m >= n:
m = 1
n += 1
if (gcd(m,n) == 1) and (m%2 == 0 or n%2 == 0):
a,b,c = (n*n)-(m*m),2*m*n,(m*m)+(n*n)
yield a,b,c

triples = get_triple()
ls = {}
a,b,c = triples.next()
target=1500000
for x in xrange(1500000):
if a+b+c <= target:
i = 1
a1,b1,c1 = a*i,b*i,c*i
while a1+b1+c1 <= target:
try:
ls[a1+b1+c1]+=1
except:
ls[a1+b1+c1] = 1
i+=1
a1,b1,c1 = a*i,b*i,c*i
else:
pass
a,b,c = triples.next()

print sum ([x for x in ls.values() if x == 1])
```