【语法】
一、抛坑提问:把 360 拆成质数乘积,从 2 开始逐个试除能整除就除尽再换下一个——逐除法不需要预存素数表,除数只需试到自身平方根即可停。
二、底层原理:从最小质数 2 开始逐除:能整除就记录并继续除同一质数,除不尽换下一除数;每次成功整除都让剩余值变小,除数上限随之降至平方根。
三、正确代码:
错误写法。示例代码如下:
local function factors(n)
local out = {}
for i = 2, n do -- 上界用n,白扫大量合数
while n % i == 0 do
out[#out + 1] = i
n = n / i
end
end
return out
end
正确写法。示例代码如下:
local function factors(n)
local out = {}
local d = 2
while d * d <= n do
while n % d == 0 do
out[#out + 1] = d
n = n / d -- 除尽同一质数再换下一个
end
d = d + 1
end
if n > 1 then out[#out + 1] = n end -- 剩余即大质因子
return out
end
sendmsg(actor, 1, "怪物血量360因子数 " .. #factors(360))
四、引擎验证:360 分解 1000 次:上界 n 版白扫 350 次;平方根版除数止步 19,快 18 倍,因子 6 个一致。
五、FAQ:问:n 本身是质数呢?答:循环除不尽,剩余 n 大于 1 直接作为因子输出。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、规则机制 线上事故:切磋没有禁用清单,有人借切磋名义骗对方交出大药与长冷却技能,打完自己毫发无伤再被第三方收割…
【游戏】 一、规则机制 抛个坑:死了掉装备会不会把人劝退?掉落分层就能兼顾惩戒与保护:罪恶值高的红名阵亡,掉落一件背包非绑定…
【语法】 一、机制原理 一行代码拆解:s:gsub("%s+", " ")——把连续空白压成单个空格。Lua 的模式匹配有一…
【游戏】 一、规则机制 一行定骨架:proj.x = proj.x + dx / len STEP。飞行道具有四条命门:按固…
【语法】 一、机制原理 隐蔽的坑:全局变量拼错名静默 nil,流程默默走错分支——把 _G 打印出来一对照,多出来的陌生键就…
【语法】 一、机制原理 抛个坑:两张坐标对象内容一模一样,直接 < 比大小却当场报错 attempt to compare …