Data update
This commit is contained in:
parent
ed705008a8
commit
0df55f9f24
2196 changed files with 32999 additions and 3075 deletions
41
Task/Pythagorean-triples/ALGOL-68/pythagorean-triples.alg
Normal file
41
Task/Pythagorean-triples/ALGOL-68/pythagorean-triples.alg
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
BEGIN # find some Pythagorean triples ( a, b, c ) #
|
||||
# where a < b < c and a^2 + b^2 = c^2 #
|
||||
|
||||
INT max perimeter = 100; # maximum a + b + c we will consider #
|
||||
INT max square = max perimeter * max perimeter;
|
||||
# form a table of square roots of numbers to max perimeter ^ 2 #
|
||||
[ 1 : max square ]INT sr;
|
||||
FOR i TO UPB sr DO sr[ i ] := 0 OD;
|
||||
FOR i TO max perimeter DO sr[ i * i ] := i OD;
|
||||
|
||||
PROC gcd = ( INT x, y )INT: # iterative gcd #
|
||||
BEGIN
|
||||
INT a := ABS x, b := ABS y;
|
||||
WHILE b /= 0 DO
|
||||
INT next a = b;
|
||||
b := a MOD b;
|
||||
a := next a
|
||||
OD;
|
||||
a
|
||||
END # gcd # ;
|
||||
|
||||
# count the Pythagorean triples #
|
||||
INT t count := 0, p count := 0;
|
||||
FOR a TO max perimeter DO
|
||||
INT a2 = a * a;
|
||||
FOR b FROM a + 1 TO max perimeter - a
|
||||
WHILE INT c = sr[ a2 + ( b * b ) ];
|
||||
a + b + c <= max perimeter
|
||||
DO IF c > b THEN # have a triple #
|
||||
t count +:= 1;
|
||||
IF gcd( a, b ) = 1 THEN # have a primitive triple #
|
||||
p count +:= 1
|
||||
FI
|
||||
FI
|
||||
OD
|
||||
OD;
|
||||
print( ( "Pythagorean triples with perimeters up to ", whole( max perimeter, 0 ), ":", newline ) );
|
||||
print( ( " Primitive: ", whole( p count, 0 ), newline ) );
|
||||
print( ( " Total: ", whole( t count, 0 ), newline ) )
|
||||
|
||||
END
|
||||
17
Task/Pythagorean-triples/EasyLang/pythagorean-triples.easy
Normal file
17
Task/Pythagorean-triples/EasyLang/pythagorean-triples.easy
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
global total prim maxperi .
|
||||
proc newtri s0 s1 s2 . .
|
||||
p = s0 + s1 + s2
|
||||
if p <= maxperi
|
||||
prim += 1
|
||||
total += maxperi div p
|
||||
newtri s0 - 2 * s1 + 2 * s2 2 * s0 - s1 + 2 * s2 2 * s0 - 2 * s1 + 3 * s2
|
||||
newtri s0 + 2 * s1 + 2 * s2 2 * s0 + s1 + 2 * s2 2 * s0 + 2 * s1 + 3 * s2
|
||||
newtri -s0 + 2 * s1 + 2 * s2 -2 * s0 + s1 + 2 * s2 -2 * s0 + 2 * s1 + 3 * s2
|
||||
.
|
||||
.
|
||||
for maxperi in [ 100 10000000 ]
|
||||
prim = 0
|
||||
total = 0
|
||||
newtri 3 4 5
|
||||
print "Up to " & maxperi & ": " & total & " triples, " & prim & " primitives"
|
||||
.
|
||||
Loading…
Add table
Add a link
Reference in a new issue