Entry 3970

Número de divisores

   

Submitted by Diego on May 19, 2010 at 3:10 a.m.
Language: Lua. Code size: 551 bytes.

function D (n)
	local limit = math.floor(math.sqrt(n))
	local d = 1 -- contamos que 1 es divisor

	for i=2, limit do -- y empezamos de 2
		if n % i == 0 then
			-- Por cada divisor debajo de la raíz
			-- hay un divisor encima de la raíz
			d = d + 2
		end
	end

	-- Corregir si es un cuadrado perfecto
	if limit*limit == n then
		d = d - 1
	end

	-- Quitar lo siguiente si sólo queremos los
	-- divisores propios.
	-- Si es distinto de uno, tenemos un divisor más
	if n ~= 1 then
		d = d + 1 -- Sí mismo
	end

	return d
end

This snippet took 0.01 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).