RosettaCodeData/Task/Arithmetic-derivative/Pluto/arithmetic-derivative.pluto

21 lines
471 B
Plaintext

local int = require "int"
local fmt = require "fmt"
local function D(n)
if n < 0 then return -D(-n) end
if n < 2 then return 0 end
local f = int.factors(n)
if #f == 1 then return 1 end
if #f == 2 then return f[1] + f[2] end
local d = n // f[1]
return D(d) * f[1] + d
end
local ad = {}
for n = -99, 100 do ad[n + 100] = D(n) end
fmt.tprint("%4d", ad, 10)
print()
for m = 1, 20 do
fmt.print("D(10^%-2d) / 7 = %.0f", m, D(10 ^ m) // 7)
end