首页
学习
活动
专区
工具
TVP
发布

【Rust每周一库】num-bigint-大整数

我们知道rust标准类型里支持的最大整数是U128,那么如果想要使用超过这个大小的整数(多半是在编程作业/科学运算/区块链)该怎么办么?这个时候就需要我们的库了。注意这个库被收录在这个元库里。我们下面为了方便就引入库。

[dependencies]

num="0.3"

如果要单独使用那么可以

[dependencies]

num-bigint="0.3"

基本用法

我们以计算斐波纳切数列为例:

usenum::bigint::BigUint;

usenum::traits::;

usestd::mem::replace;

// 计算斐波纳切数列的逻辑

fnfib(n:usize) -> BigUint {

letmutf0: BigUint = Zero::zero();

letmutf1: BigUint = One::one();

for_in..n {

letf2 = f0 + &f1;// 注意&

// f0

f0 = replace(&mutf1, f2);

}

f0

}

fnmain() {

println!("fib(1000) = {}", fib(1000));

}

随机大数

也可以配合生成随机大数。这个时候需要使用的feature,并且目前只能用0.7版本

[dependencies]

rand="0.7"

num= { version ="0.3", features = ["rand"] }

然后就可以生成随机数了

usenum::bigint::;

fnmain() {

// 随机生成一个bigint

letmutrng = rand::thread_rng();

leta = rng.gen_bigint(1000);

// 生成一个特定范围的bigint

letlow = -10000.to_bigint().unwrap();

lethigh =10000.to_bigint().unwrap();

letb = rng.gen_bigint_range(&low, &high);

println!("{}", a * b);

}

以上就是的基本用法。库里还有一些别的实用的内容大家也可以去探索一下。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210122A0GW6700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券