11个版本
0.3.0 | 2021年8月30日 |
---|---|
0.2.0 | 2021年8月28日 |
0.1.9 | 2021年8月28日 |
#1094 在 算法
每月36次下载
用于 rotation
5KB
50 行
gcd_bitwise
免责声明:代码非本人所写。
底层代码是coreutils项目的部分。为了方便使用,我为那些不想引入大型依赖项的人进行了分支。我修改了一些部分以适应通用用例,例如实现泛型类型。此crate无依赖项。
更新!
现在参数的数值类型将被转换为 usize
而不是 u32
。
您可以将 u8
、u16
、u32
、u64
和 usize
数值类型传递给 gcd()
函数。但请注意,您传递的两个数字必须具有相同的类型。传递任何有符号类型(如 i32
)可能会得到意外的结果。请参考下面的 快速入门 部分以获取示例。
一些注意事项
此代码使用stein算法,该算法用算术移位、比较和减法代替除法,以优化性能。有关更多信息,请参阅此页面。
快速入门
use gcd_bitwise::interface::gcd;
fn main() {
// For `u8` type
let num1: u8 = 15;
let num2: u8 = 51;
let gcd: u8 = gcd(num1, num2);
println!("gcd: {}", gcd); // 3
// For `usize` type
let num1: usize = 65535;
let num2: usize = 125;
let gcd: usize = gcd(num1, num2);
println!("gcd: {}", gcd); // 5
// And on it goes...
}
最终注意:
如果您发现任何问题,请不要犹豫,在github上提交问题。