RosettaCodeData/Task/Farey-sequence/Langur/farey-sequence.langur
2026-04-30 12:34:36 -04:00

23 lines
571 B
Text

val farey = fn(n number) {
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]]
}
}
val testFarey = fn*() {
writeln "Farey sequence for orders 1 through 11"
for i of 11 {
writeln "{{i:2}}: ", join(map(farey(i), by=fn(f) { "{{f[1]}}/{{f[2]}}" }), delim=" ")
}
}
testFarey()
writeln()
writeln "count of Farey sequence fractions for 100 to 1000 by hundreds"
for i = 100; i <= 1000; i += 100 {
writeln "{{i:4}}: ", len(farey(i))
}