有没有更好的方法来获取 PARI/gp 中的子字符串?

Is there a better way to get substring in PARI/gp?

? substr(s,n,m)=concat(Vec(s)[n..n+m-1])
%1 = (s,n,m)->concat(Vec(s)[n..n+m-1])
? s="h0getcwdfailedNosuchfileordirectory"
%2 = "h0getcwdfailedNosuchfileordirectory"
? substr(s,4,8)
%3 = "etcwdfai"

问题:有没有更好的方法(内置函数?)获取PARI/gp中的子字符串?

不是真的。这是一个更快的 hack(也使用更少的内存)

substr2(s,n,m)=strchr(Vecsmall(s)[n..n+m-1])

在你的例子中计时:

? substr2(s,4,8)
%1 = "etcwdfai"
? for(i=1,10^6,substr(s,4,8))
time = 536 ms.
? for(i=1,10^6,substr2(s,4,8))
time = 266 ms.