Documentation icon Τεκμηρίωση module[δημιουργία]
-- misc math functions
-- gts-tg@elwiki, Nov 2017

local p = {}

-- calculate gcd
local function _gcd(a,b)
	if b ~= 0 then
		return _gcd(b, a % b)
	else
		return math.abs(a)
	end
end

-- return gcd
function p.gcd(frame)
	local a = frame.args[1]
	local b = frame.args[2]
	
	return _gcd(a,b)
end

-- return φ(n)
function p.phi(frame)
	local n = frame.args[1]
	local amount = 0

    for k=1, n + 1 do
        if _gcd(n, k) == 1 then
            amount = amount + 1
        end
    end
    
    return amount-1
end
    
return p