【语法】
一、隐蔽陷阱
验证偶数能写成两素数之和时,把枚举范围开到 n 自身,同一组拆分被正反各算一遍,结果表里重复成对,统计口径整个乱掉。
二、底层原理
哥德巴赫猜想断言大于 2 的偶数可写成两素数之和。验证思路:对偶数 n 从小素数 p 试起,n-p 也是素数即得一组拆分;p 只需枚举到 n/2,超过一半的拆分与已有结果镜像重复。素数判定用试除到平方根。
三、正确代码
基础写法(素数试除判定):
local function isPrime(n)
if n < 2 then return false end
local i = 2
while i * i <= n do
if n % i == 0 then return false end
i = i + 1
end
return true
end
进阶写法(半程枚举拆分):
local function goldbach(n)
local m = math.floor(n / 2)
for p = 2, m do
if isPrime(p) and isPrime(n - p) then
return p, n - p
end
end
end
local p = getplayerbyname("gold01")
local x, y = goldbach(98)
sendmsg(p, 1, "98 = " .. x .. " + " .. y)
四、引擎验证
98 输出 19 + 79,两组数均为素数;4 到 100 共 49 个偶数逐一验证全部可拆,无一例外。
五、FAQ
问:试除到平方根为什么够?
答:大于根的因子必伴随一个小于根的因子。
问:猜想证明了吗?
答:尚未,工程验证按业务需要设定范围。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【语法】 一、机制原理 一行代码拆解:dist[cur] + 1。网格上求起点到终点的最少步数,广度优先一遍出答案:起点入队…
【游戏】 一、规则机制 线上事故:画质只有高低两档,高档低配机掉帧,低档高配机糊成马赛克,两头挨投诉。画质分三档:流畅、均衡…
【游戏】 一、规则机制 线上事故:转生功能上线,玩家等级刚够就点转生,提示材料不足;再一看说明,写的是转生后的等级要求——界…
【语法】 一、机制原理 抛坑提问:地图上一堆据点,用最短的围墙全圈住——围墙怎么走?凸包给答案:包住全部点的最小凸多边形。单…
【游戏】 一、规则机制 隐蔽的坑:背包满时地上物品拾不起,自动拾取又全数失败,玩家手动挑得手忙脚乱。拾取策略分层:满仓时按品…
【游戏】 一、规则机制 抛个坑:好友改了名字就认不出谁是谁——备注名怎么留住?好友备注存在自己本地:备注只改自己的显示,不动…