CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
高级技巧996引擎欧几里得最大公约数

【高级技巧】欧几里得:最大公约数的分组均衡应用

2026-09-25 14:15 作者:996 技术组 0 阅读 996引擎Lua教程传奇脚本高级技巧996引擎Lua欧几里得最大公约数

底层原理

求 a 与 b 的最大公约数:gcd(a, b) = gcd(b, a mod b),辗转相除直到余数为 0,除数即答案——每次迭代规模至少砍半,复杂度 O(log min(a, b))。最小公倍数则由 gcd 推出:lcm = a 乘 b 除以 gcd。游戏里的落点:人数不等的队伍合并成整齐分组(求 gcd)、两个不同周期的刷新对齐(求 lcm)——商与余的数学是分组与调度的底层工具。

高级封装

辗转相除与公倍数。示例代码如下:

lua
local function gcd(a, b)
    while b ~= 0 do
        a, b = b, a % b
    end
    return a
end
local function lcm(a, b)
    return a * b / gcd(a, b)
end
print(gcd(48, 36), lcm(48, 36))

输出 12 与 144——48 与 36 的最大公约 12,最小公倍 144。
联合阵型接线。示例代码如下:

lua
local a, b = 48, 36
local g = gcd(a, b)
print("每组 " .. g .. " 人,甲队 " .. a / g .. " 组,乙队 " .. b / g .. " 组")

48 人与 36 人两队合并:每组 12 人、甲队 4 组乙队 3 组——参差的两队排出整齐阵型。掉落每 48 分钟刷新、资源每 36 分钟刷新,lcm 得 144:每 144 分钟两者重合,沙巴克资源点的世界事件就设在重合时刻。

性能对比

从 min(a,b) 向下枚举公约数最坏 O(min(a,b)):48 与 36 要试 12 次;欧几里得只辗转 2 次(48,36 到 36,12 到 12,0)。数字放大到百万级,枚举不可行而欧几里得仍是几十次迭代——数值越大,对数复杂度的优势越大。

适用边界

三个不适用场景:一是只需要判断两数是否互质(gcd 为 1),常规 gcd 已足够快,更快的随机化测试是多余;二是浮点输入——取余在浮点上有精度坑,先按倍率放大成整数再算;三是需要全部公约数列表的场景,gcd 只给最大值,枚举另走一遍。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

最新技术文章 · 实战干货

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

进阶实战游戏功能

帮会运镖:镖车护送与劫镖的判定规则

【游戏】 一、一行代码拆解:hp = 10000 + teamN 5000 —— 运镖劫镖的全部骨架:镖车按护送人数增强血量…

2026-09-26 22:53 996 技术组 · 0 阅读
进阶实战语法算法

Lua线性建堆:自底向上的堆构造

【语法】 一、隐蔽陷阱:逐个插入建堆要 n 次上浮;自底向上从末个非叶子节点倒序下沉,一遍线性把乱序表调成合法堆。 二、底层…

2026-09-26 22:53 996 技术组 · 0 阅读
入门夯实语法算法

Lua真因子和数:真因子和的数体判定

【语法】 一、抛坑提问:一个数等于它全部真因子之和就叫真因子和数,6 等于 1 加 2 加 3——判定只需枚举到平方根配对求…

2026-09-26 22:53 996 技术组 · 0 阅读
入门夯实游戏功能

批量合成:低级材料的批量转换

【游戏】 一、一行代码拆解:n = math.floor(have / 5) —— 批量合成的全部骨架:5 个碎片合成 1 …

2026-09-26 22:53 996 技术组 · 0 阅读
策划架构游戏功能

装备保险:死亡掉落的保险赔付

【游戏】 一、一行代码拆解:if INSURED[actor] then 赔付 end —— 装备保险的全部骨架:死亡掉落判…

2026-09-26 22:53 996 技术组 · 0 阅读
进阶实战语法算法

Lua快速选择:第K小元素的分区求解

【语法】 一、隐蔽陷阱:找第 K 小元素先全量排序再取下标,n log n 浪费在无关排序上;快速选择借用快排分区——每轮只…

2026-09-26 22:53 996 技术组 · 0 阅读