有没有一种简单的方法可以找到两个值,当它们相乘时会产生精确的位模式?

时间:2009-09-16 15:53:03

标签: c++ testing multiplication

出于测试目的,我需要找到两个64位整数值,它们恰好乘以具有特定位模式的128位中间值。显然,我可以生成所需的中间值并除以随机值,直到找到有效的组合,但是有更有效的方法吗?

3 个答案:

答案 0 :(得分:7)

此问题听起来像integer factorisation。遗憾的是,没有快速的算法是已知的,但是从浏览维基百科页面来看,似乎有一些(可能是棘手的)算法比试验分割更快。

答案 1 :(得分:4)

我准备发布与j_random_hacker相同的东西。我只想补充说,如果128位数是素数,或者素数因子大于64位,那么你的问题将无法解决。

答案 2 :(得分:1)

我只是添加到之前的评论:如果128位数的素数因子大于64位,那么它肯定有一个小于64位的因子:)