Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function Split(_int)
- local split = {}
- local sInt = tostring(_int)
- for i = #sInt, 1, -1 do
- split[#split+1] = tonumber(sInt:sub(i,i))
- end
- return split
- end
- function SplitS(_sInt)
- local split = {}
- for i = #_sInt, 1, -1 do
- split[#split+1] = tonumber(sInt:sub(i,i))
- end
- return split
- end
- function Group(_split)
- local sInt = ""
- for i = #_split, 1, -1 do
- sInt = sInt .. _split[i]
- end
- return tonumber(sInt)
- end
- function GroupS(_split)
- local sInt = ""
- for i = #_split, 1, -1 do
- sInt = sInt .. _split[i]
- end
- return sInt
- end
- function Step(_split,_index)
- if _split[_index] >= 10 then
- _split[_index+1] = _split[_index+1] or 0
- _split[_index+1] = _split[_index+1] + math.floor(_split[_index]/10)
- _split[_index] = _split[_index] % 10
- end
- end
- function Add(_intA,_intB,_r)
- local sA = Split(_intA)
- local sB = Split(_intB)
- local sR = {}
- local i = 1
- while sA[i] ~= nil or sB[i] ~= nil do
- sA[i] = sA[i] or 0
- sB[i] = sB[i] or 0
- sR[i] = sR[i] or 0
- sR[i] = sR[i] + (sA[i] + sB[i])
- Step(sR,i)
- i = i + 1
- end
- if _r == nil then
- return Group(sR)
- else
- return GroupS(sR)
- end
- end
- function Mul(_intA,_intB,_r)
- local sA = Split(_intA)
- local sB = Split(_intB)
- local sR = {}
- for i = 1, #sA do
- sA[i] = sA[i] or 0
- for j = 1, #sB do
- sB[j] = sB[j] or 0
- sR[j+(i-1)] = sR[j+(i-1)] or 0
- sR[j+(i-1)] = sR[j+(i-1)] + (sA[i] * sB[j])
- Step(sR,j+(i-1))
- end
- end
- if _r == nil then
- return Group(sR)
- else
- return GroupS(sR)
- end
- end
- function Pow(_intBase,_intExponent,_r)
- local rInt = 1
- for i = 1, _intExponent do
- rInt = Mul(rInt,_intBase,_r)
- end
- return rInt
- end
- function Mod(_intN,_intM)
- sN = Split(_intN)
- sInt = ""
- for i = #sN, 1, -1 do
- sInt = sInt .. sN[i]
- sInt = tonumber(sInt) % _intM
- end
- return sInt
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement