モジュール:数学

提供:WikiWiki
ナビゲーションに移動 検索に移動

このモジュールについての説明文ページを モジュール:数学/doc に作成できます

local p = {}

function p.getLmc(frame) --2数の最小公倍数を求める関数
	local num1 = tonumber(frame.args[1])
	local num2 = tonumber(frame.args[2])
	if num1 and num2 then
		if num1 == 0 or num2 == 0 then
			return 0
		end
		if num1 == num2 then
			return num1
		end
		local a = 1
		local b = 1
		while a*num1 ~= b*num2 do
			if a*num1 > b*num2 then
				b = b + 1
			else
				a = a + 1
			end
		end
		return a*num1
	else
		return "'''関数 getLmc: 引数には数値のみを入力してください。'''"
	end
end

function p.listTurples(frame) -- 第2引数以降に入力された有限桁の整数または小数からなる三つ組のうち、その要素の総和が第1引数に入力された有限桁の整数または小数となるようなものを列挙する関数
	local ans = assert(tonumber(frame.args[1]), "答えを半角数字で指定してください。")
	local arr = {}
	local t = 2
	while frame.args[t] do
		arr[t-1] = tonumber(frame.args[t])
		t = t + 1
	end
	local output = ""
	for i = 1, #arr - 2 do
		for j = i + 1, #arr - 1 do
			if i ~= j then
				local rest = ans - i - j
				for k = j + 1, #arr do
					if arr[k] == rest then
						output = output.."("..arr[i]..","..arr[j]..","..rest..")"
					end
				end
			end
		end
	end
	if output == "" then return "指定された条件に適する組はありません。" end
	return output
end

function p.sigma(frame) -- the sum of ([1] * k^2) + ([2] * k^1) + ([3] * k^0) as k goes from [4] to [5]
	local k2, k1, k0 = tonumber(frame.args[1]), tonumber(frame.args[2]), tonumber(frame.args[3])
	local firstk, lastk = tonumber(frame.args[4]), tonumber(frame.args[5])
	output = 0
	for i = firstk, lastk do
		output = output + k2*i*i + k1*i + k0
	end
	return output
end

function p.captalPi(frame) -- the product of ([1] * k^2) + ([2] * k^1) + ([3] * k^0) as k goes from [4] to [5]
	local k2, k1, k0 = tonumber(frame.args[1]), tonumber(frame.args[2]), tonumber(frame.args[3])
	local firstk, lastk = tonumber(frame.args[4]), tonumber(frame.args[5])
	output = 1
	for i = firstk, lastk do
		output = output * (k2*i*i + k1*i + k0)
	end
	return output
end

return p