【发布时间】:2017-11-03 21:15:46
【问题描述】:
我需要计算大数的素数分解,我的意思是范围为 10^100 的大数。
我得到一个输入 a[0]
设X为内存中的数据,X可以表示为:
X = (p[0]^c1)(p[1]^c2)(p[2]^c[3]) .... 其中 p[i] 是它的主要原因。 所以我把它保存为,
A[p[0]] = c1, A[p[1]] = c2.... as p[i]
当新数到来时,我只需在 A 中添加新数的素数幂。
所以这非常有效,而且速度也足够快。现在我正在考虑优化空间并以时间效率的降低来弥补。
所以如果我可以将任何数字 P 表示为 x^a + b 其中 x 是素数。我可以分解它吗? P 显然不适合内存,但是 2
【问题讨论】:
-
如果你的目标数是许多已知 a[i] 相乘的结果,你不需要发明任何其他形式。只需将每个 a[i] 分解并通过添加它们来计算素数幂(指数),就像您所做的那样(为什么要更改当前方法?)。您可以使用更紧凑的 A(素数幂)数组 - 甚至只有 2 的素数幂,因此您可以将每个
标签: algorithm dynamic-programming primes prime-factoring