mathe 发表于 2008-5-6 14:34:10

CHugeIntX::GeneratePrime的BUG

比如CHugeIntX::GeneratePrime(140),得到的素数的二进制位数目总是只有120多位
应该是个比较简单的BUG

无心人 发表于 2008-5-6 14:55:43

是不是最大128位?

另外是否为位随机算法?
必须是位随机

mathe 发表于 2008-5-6 15:00:38

没有限制,141或者142位产生数据长度都还可以。140就不行了

gxqcn 发表于 2008-5-6 15:07:11

谢谢反馈该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!谢谢!

mathe 发表于 2008-5-6 15:11:10

在这个版块,发表文章时,是不是应该在标题前面的分类中添加一个"BUG"选项?我现在只能选择“建议”

gxqcn 发表于 2008-5-6 15:41:59

已新增该主题分类。:)

gxqcn 发表于 2008-5-6 21:13:55

已修正(仅修改了那处代码;资源文件里将文件日期进行了修改;版本号未变),
新的DLL请大家从 4# 下载更新,覆盖原同名文件即可。

无心人 发表于 2008-5-6 21:17:10

:)

手挺快的啊
页: [1]
查看完整版本: CHugeIntX::GeneratePrime的BUG