CHugeIntX::GeneratePrime的BUG
比如CHugeIntX::GeneratePrime(140),得到的素数的二进制位数目总是只有120多位应该是个比较简单的BUG 是不是最大128位?
另外是否为位随机算法?
必须是位随机 没有限制,141或者142位产生数据长度都还可以。140就不行了 谢谢反馈该bug!
当且仅当 28|u32Bits 时,生成的素数要小 28-9=19 bits
原因如下:
GeneratePrime( u32Bits ) 函数中需事先进行 Random( u32Bits ),
当 u32Bits 能被 U32_BASEX_BITS (=28)整除时,
本应设定首band位长=U32_BASEX_BITS,却误写成了=U32_BASE_LEN(=9)
该bug的影响面:
仅对 CHugeIntX::Random( u32Bits ) 当 u32Bits 正好被 28 整除时,
间接影响到内部调用该函数的 CHugeIntX::GeneratePrime( u32Bits )
这是 HugeCalc V8.0.0.0 面世以来首个被发现的bug!谢谢! 在这个版块,发表文章时,是不是应该在标题前面的分类中添加一个"BUG"选项?我现在只能选择“建议” 已新增该主题分类。:) 已修正(仅修改了那处代码;资源文件里将文件日期进行了修改;版本号未变),
新的DLL请大家从 4# 下载更新,覆盖原同名文件即可。 :)
手挺快的啊
页:
[1]