2023-10-27 13:50:26 +02:00
|
|
|
gcd := vals -> {
|
2024-02-22 20:21:11 +01:00
|
|
|
loop {
|
2023-10-27 13:50:26 +02:00
|
|
|
(a, b) := vals
|
2023-10-27 19:19:42 +02:00
|
|
|
if a.eq(b)
|
2023-10-27 13:50:26 +02:00
|
|
|
(a)
|
2023-11-07 20:24:20 +01:00
|
|
|
else if b.subtract(a).signum.eq(1)
|
|
|
|
&vals = (a, b.subtract(a))
|
2023-10-27 13:50:26 +02:00
|
|
|
else
|
2023-11-07 20:24:20 +01:00
|
|
|
&vals = (a.subtract(b), b)
|
2024-02-22 20:21:11 +01:00
|
|
|
}
|
2023-11-08 15:11:28 +01:00
|
|
|
}
|
2023-10-27 13:50:26 +02:00
|
|
|
|
|
|
|
get_num := () -> {
|
2024-02-22 20:21:11 +01:00
|
|
|
loop {
|
2024-06-19 13:58:30 +02:00
|
|
|
line := ().read_line.try((line) -> line.trim, () -> "")
|
2024-03-22 16:50:01 +01:00
|
|
|
line.parse_float.try(
|
2024-02-22 20:21:11 +01:00
|
|
|
(n) -> (n)
|
|
|
|
() -> ("Error: '", line, "' not a number!").concat.println
|
2024-03-22 16:50:01 +01:00
|
|
|
)
|
2024-02-22 20:21:11 +01:00
|
|
|
}
|
2023-10-27 13:50:26 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
("gcd of 899 and 2900 is ", (899, 2900).gcd).concat.println // 29
|
|
|
|
"Now type two numbers!".println
|
|
|
|
(a, b) := (().get_num, ().get_num)
|
|
|
|
("gcd of ", a, " and ", b, " is ", (a, b).gcd).concat.println
|