45 lines
1.1 KiB
Text
45 lines
1.1 KiB
Text
import math
|
|
|
|
// a function to check if three numbers are a valid triple
|
|
def is_triple(a, b, c)
|
|
if not (a < b) and (b < c)
|
|
return false
|
|
end
|
|
|
|
return (a^2 + b^2) = c^2
|
|
end
|
|
|
|
// a function to check if the numbers are coprime
|
|
def is_coprime(a, b, c)
|
|
global math
|
|
return (math.gcd(a, b)=1) && (math.gcd(a, c)=1) && (math.gcd(b, c)=1)
|
|
end
|
|
|
|
// the maximum perimeter to check
|
|
perimeter = 100
|
|
perimeter2 = int(perimeter / 2) - 1
|
|
perimeter3 = int(perimeter / 3) - 1
|
|
|
|
// loop though and look for pythagorean triples
|
|
ts = 0
|
|
ps = 0
|
|
for a in range(1, perimeter3)
|
|
for b in range(a + 1, perimeter2)
|
|
for c in range(b + 1, perimeter2)
|
|
if (a + b + c) <= perimeter
|
|
if is_triple(a,b,c)
|
|
ts += 1
|
|
print a + ", " + b + ", " + c
|
|
if is_coprime(a,b,c)
|
|
ps += 1
|
|
print " primitive"
|
|
end
|
|
println
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
print "Up to a perimeter of " + perimeter + ", there are " + ts
|
|
println " triples, of which " + ps + " are primitive."
|