35 lines
571 B
R
35 lines
571 B
R
farey <- function(n, length_only = FALSE) {
|
|
a <- 0
|
|
b <- 1
|
|
c <- 1
|
|
d <- n
|
|
if (!length_only)
|
|
cat(a, "/", b, sep = "")
|
|
count <- 1
|
|
while (c <= n) {
|
|
count <- count + 1
|
|
k <- ((n + b) %/% d)
|
|
next_c <- k * c - a
|
|
next_d <- k * d - b
|
|
a <- c
|
|
b <- d
|
|
c <- next_c
|
|
d <- next_d
|
|
if (!length_only)
|
|
cat(" ", a, "/", b, sep = "")
|
|
}
|
|
if (length_only)
|
|
cat(count, "items")
|
|
cat("\n")
|
|
}
|
|
|
|
|
|
for (i in 1:11) {
|
|
cat(i, ": ", sep = "")
|
|
farey(i)
|
|
}
|
|
|
|
for (i in 100 * 1:10) {
|
|
cat(i, ": ", sep = "")
|
|
farey(i, length_only = TRUE)
|
|
}
|