Pythagorean triples: Difference between revisions
Content added Content deleted
(Added Pythagorean triples for EDSAC) |
No edit summary |
||
Line 2,973: | Line 2,973: | ||
1000000: 808950 Triples, 70229 Primitives |
1000000: 808950 Triples, 70229 Primitives |
||
</pre> |
</pre> |
||
=={{header|Nanoquery}}== |
|||
===Brute force method=== |
|||
{{trans|Java}} |
|||
<lang Nanoquery>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."</lang> |
|||
{{out}} |
|||
<pre>3, 4, 5 primitive |
|||
5, 12, 13 primitive |
|||
6, 8, 10 |
|||
7, 24, 25 primitive |
|||
8, 15, 17 primitive |
|||
9, 12, 15 |
|||
9, 40, 41 primitive |
|||
10, 24, 26 |
|||
12, 16, 20 |
|||
12, 35, 37 primitive |
|||
15, 20, 25 |
|||
15, 36, 39 |
|||
16, 30, 34 |
|||
18, 24, 30 |
|||
20, 21, 29 primitive |
|||
21, 28, 35 |
|||
24, 32, 40 |
|||
Up to a perimeter of 100, there are 17 triples, of which 7 are primitive.</pre> |
|||
=={{header|Nim}}== |
=={{header|Nim}}== |