RosettaCodeData/Task/Farey-sequence/Langur/farey-sequence.langur

24 lines
571 B
Text
Raw Permalink Normal View History

2026-02-01 16:33:20 -08:00
val farey = fn(n number) {
2024-07-13 15:19:22 -07:00
var a, b, c, d = 0, 1, 1, n
while[=[[0, 1]]] c <= n {
val k = (n + b) // d
a, b, c, d = c, d, k * c - a, k * d - b
_while ~= [[a, b]]
2023-07-01 11:58:00 -04:00
}
}
2024-07-13 15:19:22 -07:00
val testFarey = fn*() {
2023-07-01 11:58:00 -04:00
writeln "Farey sequence for orders 1 through 11"
2024-07-13 15:19:22 -07:00
for i of 11 {
2026-04-30 12:34:36 -04:00
writeln "{{i:2}}: ", join(map(farey(i), by=fn(f) { "{{f[1]}}/{{f[2]}}" }), delim=" ")
2023-07-01 11:58:00 -04:00
}
}
2024-07-13 15:19:22 -07:00
testFarey()
2023-07-01 11:58:00 -04:00
writeln()
writeln "count of Farey sequence fractions for 100 to 1000 by hundreds"
2024-07-13 15:19:22 -07:00
for i = 100; i <= 1000; i += 100 {
writeln "{{i:4}}: ", len(farey(i))
2023-07-01 11:58:00 -04:00
}