我有一个非常大的数字,它是几个小素数的产物。我知道这个数字,而且我知道主要因素,但我不知道他们的权力。例如:
(2^a)x(3^b)x(5^c)x(7^d)x(11^e)x .. = 2310
现在我想以非常快速有效的方式恢复指数。我想在FPGA中实现它。
此致
答案 0 :(得分:2)
问题在于,当您进行二分查找时,您正在线性搜索正确的功率。下面是一个示例,示出了p的幂是10(p ^ 10)的情况。此方法以O(log N)格而不是O(N)来查找幂。
首先通过快速增加功率来找到上限,直到它太高,这发生在步骤5.然后它使用二进制搜索来找到实际功率。
注意,有一种方法,你实际上除以p,在步骤4,你实际上把数字除以p ^(1 + 2 + 4 + 8)= p ^ 15,但它更多一点很难解释二进制搜索部分。但是,被分割数量的大小变小,因此除法运算更快。