Stack Overflow。我在这里看到了一些关于时间复杂性的大量资源,但到目前为止,我还没有能够使用它们回答这个空间复杂性问题。所以:
如果我将前n个素数相乘,那么存储答案需要 space ?例如,将前1000个素数相乘并存储结果数(整数,尽管是大整数)。它需要n平方还是log(n)空间?
非常感谢!
答案 0 :(得分:1)
prime number theorem告诉我们 n 的素数大约是 n ln n ,所以第一个的产物< em> n 素数大约是
Π i ≤ n ( i ln i )= 名词的! O((log n ) n )= O(( n log n ) 名词 )
要表示这个数字,你需要的空间就是那个数字的对数,即
O( n (log n + log log n ))。
(请注意,这比存储 n !所需的空间渐近地大,这只是O( n log n )。 )
答案 1 :(得分:0)
刚刚提出问题的最后部分。如果你有一个前n个素数的列表,最后乘法中的数字位数将是log(n ^ n),它只是n log n。由于算法只是将每个算法与一个累加器相乘,我会说总空间要求是最终预期的数字位数,即:n log(n)