0

我是 pari/gp 的新手。我factorint用来查找所有主要因素,它返回一个矩阵。我试图遍历矩阵以找到内部的最大数字,但无法找到行和列的长度。另外,我如何使用 if 来比较每个元素的高低。Myp正在顶部生成。

temp = factorint(p-1);
num = 0;
for(i=1, size,
    for(j=1, size,
        if(num <= temp[i,j], num = temp[i,j]);
    );
);

print("number is = "  num);

提前致谢。

4

2 回答 2

1

请注意,它factorint(p)总是返回 nx2 矩阵,其中n是 的主要因子的数量p。第一列是主要因素。第二列是它们的多样性。

所以你只需要找到第一列的最大元素。可以按如下方式完成:

factors = factorint(p-1);
print("number is = ", vecmax(factors[, 1]));

顺便说一下,向量的长度v正好#v在 PARI/GP 中。

于 2016-05-11T08:08:17.093 回答
0

此外matsize,您还可以使用#. 例如, factorint(30)给出一个 3x2 矩阵;

[2 1]

[3 1]

[5 1]

#factorint(30)给出该矩阵的列数(即 2). 通过转置矩阵,得到的矩阵有 3 列,这是 30 的不同素因子的数量。转置可以如下完成:附加~到矩阵。所以我们可以做得到 #factorint(30)~ 不同质因数的数量;哪个打印

[2 3 5]

[1 1 1]

由于这些素因数将在第一行中越来越多地排序,因此第一行中的最后一个是最大的,因此 factorint(30)[#factorint(30)~, 1]给出最大的素因数 30;5 现在你可以避免两次因式分解 30;

f = factorint(30); f[#f~]

获得5所需。

于 2018-09-10T06:45:03.440 回答