有没有办法在Rust中对BigInt进行右移位?

vom3gejh  于 2023-01-09  发布在  其他
关注(0)|答案(1)|浏览(149)

当我尝试在BigInt上执行〉〉或〉〉=时,我得到这个错误:
第一个月
使用num_bigint::BigInt
编辑:更多上下文:
我正在把这个程序https://www.geeksforgeeks.org/how-to-generate-large-prime-numbers-for-rsa-algorithm/从python/c++重写到rust中,但是我将重点放在python的实现上,因为它是为了处理1024位质数而写的,这是非常大的。
在代码中,我们运行米勒Rabin素性测试,其中包括移位EC:(prime-candidate - 1)右移1,如果我们发现EC % 2 == 0。正如我在python实现中提到的,EC可以是一个非常大的整数。
如果能够使用相同的操作员进行除 rust ,将会很方便,如果这不可能,有人能提出替代方案吗?

xqkwcwgp

xqkwcwgp1#

根据num-bigint机箱的文档,BigInt结构体确实实现了右移操作符的Shr特性,只是当移位量本身是BigInt时没有实现。如果将移位量转换为标准整数类型(例如i64),那么它应该工作。
你不太可能希望移位量大于i64::MAX,但如果你确实需要,那么正确的结果将是零(因为没有计算机有2^60字节的内存),所以你可以写一个简单的实现来检查这种情况。

相关问题