31 lines
699 B
Plaintext
31 lines
699 B
Plaintext
require "rat"
|
|
local int = require "int"
|
|
local fmt = require "fmt"
|
|
|
|
local function f(l, r, n)
|
|
local m = rat.of(l:getNum() + r:getNum(), l:getDen() + r:getDen())
|
|
if m:getDen() <= n then
|
|
f(l, m, n)
|
|
io.write($"{m:tostring()} ")
|
|
f(m, r, n)
|
|
end
|
|
end
|
|
|
|
-- Task 1: solution by recursive generation of mediants.
|
|
for n = 1, 11 do
|
|
local l = rat.of(0)
|
|
local r = rat.of(1)
|
|
io.write($"F({n}): {l:tostring()} ")
|
|
f(l, r, n)
|
|
print(r)
|
|
end
|
|
print()
|
|
|
|
-- Task 2: direct solution by summing totient function.
|
|
-- Sum totients to 1000.
|
|
local sum = 1
|
|
for n = 1, 1000 do
|
|
sum += int.totient(n)
|
|
if n % 100 == 0 then fmt.print("F(%4d): %7s", n, fmt.int(sum)) end
|
|
end
|