离散数学

Language Swift CI Status Release Version Platforms License SPM

离散数学 是一组来自离散数学的算法实现。

示例

运算符

同余模 n ==%

等价关系 a ≡ b(mod m) ↔ m | (b - a)。

-8 ==% (7, 5) // true
2 ==% (8, 5) // false

整除 |%

返回 a|b 是否成立 ↔ ∃ q ∈ N, b = q · a。

3 |% 9 // true
2 |% 7 // false

函数

长除法

对两个整数执行除法,并返回商和余数。

a = q · b + r

longDivision(a: 8, b: 3) // (q: 2, r: 2)

最大公约数

gcd() 使用欧几里得算法返回最大公约数。

gcd(5005, 4410) // 35
gcd(175, 155) // 5

egcd() 使用扩展欧几里得算法返回两个整数的 GCD 作为整数组合。

a · x + b · y = d

egcd(5005, 4410) // (d: 35, x: -37, y: 42)
egcd(175, 155) // (d: 5, x: 8, y: -9)

互质

如果 gcd(a, b) = 1,则称两个元素 a 和 b 互质。

coprime(17, -60) // true

线性丢番图方程

lde() 返回给定线性丢番图方程的解,如果无解则返回 nil

lde(a: 175, b: 155, c: 50) // (x: 80, y: -90)
lde(a: 234, b: 182, c: 10) // nil

ldeSolutions() 返回一个函数,该函数将计算 LDE 的所有可能的解。

let solutions = ldeSolutions(a: 175, b: 155, c: 50)
solutions!(3) // (173, -195)

安装

Swift Package Manager

推荐使用 Swift Package Manager 来安装 DiscreteMathematics

要安装它,请将以下内容添加到您的 Package.swiftdependencies 数组中

.package(url: "https://github.com/cszatma/DiscreteMathematics.git", from: "2.0.0")

CocoaPods

DiscreteMathematics 也可以通过 CocoaPods 获得。

要安装它,请将以下行添加到您的 Podfile 中

pod 'DiscreteMathematics', '~> 2.0'

许可证

DiscreteMathematics 在 MIT 许可证 下可用。

贡献

打开一个 issue 或提交一个 pull request。