Farey sequence: Difference between revisions

Content added Content deleted
Line 2,201: Line 2,201:


=={{header|langur}}==
=={{header|langur}}==
<syntaxhighlight lang="langur">val .farey = fn(.n) {
<syntaxhighlight lang="langur">
val farey = fn(n) {
var .a, .b, .c, .d = 0, 1, 1, .n
while[=[[0, 1]]] .c <= .n {
var a, b, c, d = 0, 1, 1, n
val .k = (.n + .b) // .d
while[=[[0, 1]]] c <= n {
.a, .b, .c, .d = .c, .d, .k * .c - .a, .k * .d - .b
val k = (n + b) // d
_while ~= [[.a, .b]]
a, b, c, d = c, d, k * c - a, k * d - b
_while ~= [[a, b]]
}
}
}
}


val .testFarey = impure fn() {
val testFarey = impure fn() {
writeln "Farey sequence for orders 1 through 11"
writeln "Farey sequence for orders 1 through 11"
for .i of 11 {
for i of 11 {
writeln "{{.i:2}}: ", join " ", map(fn .f: "{{.f[1]}}/{{.f[2]}}", .farey(.i))
writeln "{{i:2}}: ", join(" ", map(fn f: "{{f[1]}}/{{f[2]}}", farey(i)))
}
}
}
}


.testFarey()
testFarey()


writeln()
writeln()
writeln "count of Farey sequence fractions for 100 to 1000 by hundreds"
writeln "count of Farey sequence fractions for 100 to 1000 by hundreds"
for .i = 100; .i <= 1000; .i += 100 {
for i = 100; i <= 1000; i += 100 {
writeln $"\.i:4;: ", len(.farey(.i))
writeln "{{i:4}}: ", len(farey(i))
}
}</syntaxhighlight>
</syntaxhighlight>


{{out}}
{{out}}