#euclidean #algo #algorithm #divisor #find #greatest #loops

bin+lib euclidean_algo

实现欧几里得算法以找到最大公约数

4个版本

0.3.1 2024年4月9日
0.3.0 2024年4月9日
0.2.1 2024年4月9日
0.2.0 2024年4月9日

#4 in #euclidean

MIT 协议

7KB
147 行代码(不包括注释)

欧几里得算法

实现欧几里得算法有两种方法。第一种是递归调用一个非常简单的函数。第二种是一个循环并操作整数的函数。

main.rs提供了一个二进制文件,用于测试两种方法并比较它们的运行时间。

可以通过将依赖项添加到Cargo.toml并导入函数来使用此函数。

use crate::euclidean_algo::{eucl_algo_recursive, eucl_algo_loop};

// As with Rust adding integer to a function we are provided by a copy and don't need to make the initial integer to mutable them to mutable.
let x: u64 = 15;
let y: u64 = 30;

let gcd_recursive = eucl_algo_recursive::run(x,y);
let gcd_loop = eucl_algo_loop::run(x,y);

println!("The gcd is {gcd_recursive} (loop: {gcd_loop})");

对于更大的整数,提供了一个run_big函数。可以使用::run_bigint(x,y)代替run,使用num::BigUint处理更大的数字。

依赖项

~465KB