离散数学 1.3.0

离散数学 1.3.0

测试已测试
语言 SwiftSwift
许可证 MIT
发布最后版本2018年1月
SwiftSwift版本4.0
SPM支持SPM

Christopher Szatmary维护。



  • Christopher Szatmary

离散数学

Language Swift
Version
License
Platform
Swift Package Manager compatible

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

示例

运算符

模n同余 ==%

当且仅当m | (b - a)时,关系a ≡ b(mod m)成立。

-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()使用扩展欧几里得算法返回两个整数的最大公约数,并以整数组合的形式返回。


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)

安装

要求

  • iOS 8.0+
  • macOS 10.9+
  • tvOS 9.0+
  • watchOS 2.0+
  • Linux
  • Swift 4

CocoaPods

离散数学可以通过CocoaPods获取。安装方法如下:
只需将以下行添加到Podfile中

pod 'DiscreteMathematics', '~> 1.2'

Swift包管理器

离散数学可以通过Swift包管理器获取。安装方法如下:
Package.swift中添加以下内容。

import PackageDescription

let package = Package(
    name: "MyProject",
    dependencies: [
        .package(url: "https://github.com/cszatma/DiscreteMathematics.git", from: "1.2.0")
    ]
)

贡献

提交一个问题或发送一个拉取请求。