RosettaCodeData/Task/Farey-sequence/Langur/farey-sequence.langur
2024-04-19 16:56:29 -07:00

23 lines
593 B
Text

val .farey = fn(.n) {
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 = impure fn() {
writeln "Farey sequence for orders 1 through 11"
for .i of 11 {
writeln $"\.i:2;: ", join " ", map(fn(.f) $"\.f[1];/\.f[2];", .farey(.i))
}
}
.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))
}