如何知道一个数字是否在 pari 的数字集合中?

How to know if a number is in a collection of numbers in pari?

我大部分时间都使用 pari 进行计算数论研究。我输入了以下内容:for(x=1,100,print1(eulerphi(n)-1))
它给出了整数 1 到 100 的 φ(n)-1 的值。这里 φ(n) 是小于 n 且与​​ n 互质的整数的数量。它给出了以下输出:
0 0 1 1 3 1 5 3 5 3 ... 65 31 43 23 69 2 43 59 45 71 31 95 41 59 39
(我排除了一些整数以使问题简短)我想检查这些数字中是否有数字。我该怎么做?

您可以使用函数setsearch对排序列表进行二分查找。它 returns 从 1 开始的匹配索引,如果没有找到则为 0。你的例子在这里:

xs = Set(vector(100, n, eulerphi(n)-1))
> [0, 1, 3, 5, 7, ..., 87, 95]

setsearch(xs, 4)
> 4

setsearch(xs, 20)
> 0