#euclidean #extended #lib #finding #congruence #multiple #euc

euc_lib

扩展和正常欧几里得算法的易用实现

14个不稳定版本 (3个破坏性更新)

0.4.0 2023年6月17日
0.3.2 2023年4月24日
0.2.6 2023年2月21日
0.2.3 2023年1月29日
0.1.9 2023年1月25日

#910 in 算法

GPL-3.0 许可证

16KB
165

euc_lib

库实现

  • euc - 欧几里得算法
  • euc_ext - 扩展欧几里得算法
  • lcm - 最小公倍数
  • congruence - 同余求解函数,找到解的最小x

想贡献吗?

我的github

github

项目

github

支持

https://www.buymeacoffee.com/WhiskyAKM



示例使用

Euclides

扩展

程序

use euc_lib;
fn main() {
    prinln!("{}", euc_lib::I32::euc_ext(135, 35));
}

输出

NWD = 5, S = -1, T = 4

简单

程序

use euc_lib;
fn main() {
    prinln!("{}", euc_lib::I32::euc(135, 35)); // there is recursive variant too: euc_recursive(135,35)
}

输出

5

将向量作为参数

程序

use euc_lib;
fn main() {
    println!("{:?}", euc_lib::I32::euc_from_vec(vec![21, 14, 56]));
}

输出

Ok(7)

LCM

简单

本版本实现使用gcd(欧几里得算法)的最小公倍数计算方法

程序

use euc_lib;
fn main () {
    println!("{}", euc_lib::I32::lcm(21, 6)) // there is recursive variant too: lcm_recursive
}

输出

42

向量作为参数

程序

use euc_lib;
fn main() {
    println!("{:?}", euc_lib::I32::lcm_from_vec(vec![12,4,8]))
}

输出

Ok(24)

同余

程序

use euc_lib;
fn main() {
    println!("{:?}", euc_lib::I32::congruence(9,21,30))
}

输出

Ok(9)

i64支持

要使用所有函数的i64版本,请使用euc_lib::I64而不是euc_lib::I32

I64使用示例

程序

use euc_lib;
fn main() {
    prinln!("{}", euc_lib::I64::euc_ext(135, 35));
}

输出

NWD = 5, S = -1, T = 4

依赖项

~465KB