GP/PARI 中的动态数组
Dynamic array in GP/PARI
我需要计算从 1 到 N 的素数个数。为此,我想将每个下一个数字 n 除以 2 到 sqrt(n) 范围内的素数。为此,反过来,我需要存储所有以前收集的素数。
如何有效地存储它们?
以防万一,我对查找素数的算法不感兴趣,我对一般如何存储此类数据感兴趣。在 C++ 中,我可以使用 std::vector,因为它会适当地重新分配自身或某种列表。
在 PARI/GP 中,对于高效的动态数组,您可以使用 List
。它的行为类似于 C++ 中的 std::vector
。
请看下面的例子:
xs = List()
gp> List([])
listput(xs, 1);
listput(xs, 2);
xs
gp> List([1, 2])
我需要计算从 1 到 N 的素数个数。为此,我想将每个下一个数字 n 除以 2 到 sqrt(n) 范围内的素数。为此,反过来,我需要存储所有以前收集的素数。
如何有效地存储它们?
以防万一,我对查找素数的算法不感兴趣,我对一般如何存储此类数据感兴趣。在 C++ 中,我可以使用 std::vector,因为它会适当地重新分配自身或某种列表。
在 PARI/GP 中,对于高效的动态数组,您可以使用 List
。它的行为类似于 C++ 中的 std::vector
。
请看下面的例子:
xs = List()
gp> List([])
listput(xs, 1);
listput(xs, 2);
xs
gp> List([1, 2])