当我尝试在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 ,将会很方便,如果这不可能,有人能提出替代方案吗?
1条答案
按热度按时间xqkwcwgp1#
根据
num-bigint
机箱的文档,BigInt
结构体确实实现了右移操作符的Shr
特性,只是当移位量本身是BigInt
时没有实现。如果将移位量转换为标准整数类型(例如i64
),那么它应该工作。你不太可能希望移位量大于
i64::MAX
,但如果你确实需要,那么正确的结果将是零(因为没有计算机有2^60字节的内存),所以你可以写一个简单的实现来检查这种情况。