47 lines
1.1 KiB
Text
47 lines
1.1 KiB
Text
class
|
|
APPLICATION
|
|
|
|
create
|
|
make
|
|
|
|
feature
|
|
|
|
make
|
|
local
|
|
perimeter: INTEGER
|
|
do
|
|
perimeter := 100
|
|
from
|
|
until
|
|
perimeter > 1000000
|
|
loop
|
|
total := 0
|
|
primitive_triples := 0
|
|
count_pythagorean_triples (3, 4, 5, perimeter)
|
|
io.put_string ("There are " + total.out + " triples, below " + perimeter.out + ". Of which " + primitive_triples.out + " are primitives.%N")
|
|
perimeter := perimeter * 10
|
|
end
|
|
end
|
|
|
|
count_pythagorean_triples (a, b, c, perimeter: INTEGER)
|
|
-- Total count of pythagorean triples and total count of primitve triples below perimeter.
|
|
local
|
|
p: INTEGER
|
|
do
|
|
p := a + b + c
|
|
if p <= perimeter then
|
|
primitive_triples := primitive_triples + 1
|
|
total := total + perimeter // p
|
|
count_pythagorean_triples (a + 2 * (- b + c), 2 * (a + c) - b, 2 * (a - b + c) + c, perimeter)
|
|
count_pythagorean_triples (a + 2 * (b + c), 2 * (a + c) + b, 2 * (a + b + c) + c, perimeter)
|
|
count_pythagorean_triples (- a + 2 * (b + c), 2 * (- a + c) + b, 2 * (- a + b + c) + c, perimeter)
|
|
end
|
|
end
|
|
|
|
feature {NONE}
|
|
|
|
primitive_triples: INTEGER
|
|
|
|
total: INTEGER
|
|
|
|
end
|