2个版本

使用旧的Rust 2015

0.1.1 2018年12月8日
0.1.0 2017年2月8日

#1639算法

Download history 359/week @ 2024-04-13 548/week @ 2024-04-20 635/week @ 2024-04-27 1055/week @ 2024-05-04 669/week @ 2024-05-11 623/week @ 2024-05-18 287/week @ 2024-05-25 438/week @ 2024-06-01 393/week @ 2024-06-08 359/week @ 2024-06-15 399/week @ 2024-06-22 294/week @ 2024-06-29 288/week @ 2024-07-06 462/week @ 2024-07-13 391/week @ 2024-07-20 281/week @ 2024-07-27

1,438 每月下载量
用于 9 crates

无授权

5KB

rust-modinverse

寻找模乘法逆元的小型库。还内置了扩展欧几里得算法的实现。

modinverse

计算整数 a 的模乘法逆元 x,使得 ax ≡ 1 (mod m)。

这样的整数可能不存在。如果存在,则此函数将返回包裹在 Some 中的逆元。否则,将返回 None

use modinverse::modinverse;

let does_exist = modinverse(3, 26);
let does_not_exist = modinverse(4, 32);

match does_exist {
    Some(x) => assert_eq!(x, 9),
    None => panic!("modinverse() didn't work as expected"),
}

match does_not_exist {
   Some(x) => panic!("modinverse() found an inverse when it shouldn't have"),
   None => {},
}

egcd

找到两个整数 ab 的最大公约数,以及两个整数 xy,使得 ax + byab 的最大公约数(Bézout系数)。

此函数是扩展欧几里得算法的实现。

use modinverse::egcd;

let a = 26;
let b = 3;
let (g, x, y) = egcd(a, b);

assert_eq!(g, 1);
assert_eq!(x, -1);
assert_eq!(y, 9);
assert_eq!((a * x) + (b * y), g);

依赖

~205KB