将多项式的因子返回为 Pari/GP 中的向量

Returning the factors of a polynomial as a vector in Pari/GP

当使用 factor 时,Pari 打印多项式的因子及其重数。然而,当使用 polcyclofactors 时,多项式的分圆因子被列为一个向量,没有多重性。

有什么方法可以模仿 polcyclofactors 只是简单地对多项式进行因式分解?那么,只将多项式的因子显示为向量而不用担心重数?

是的。函数 factor returns 一个两列矩阵。如果你只对素数感兴趣,而不是重数,你可以 select 只是第一列:

例如:

factor(120)[,1]

如果您只对多重性感兴趣,您会做 [,2]。如果您需要将结果作为向量而不是列向量(这两种类型大部分可以互换),那么您还需要添加一个转换:

Vec(factor(120)[,1])

尽管我用整数完成了示例,但它也适用于多项式。

Vec(factor((1+x)^7*(1+x^2)^3)[,1])

Andrew 答案的变体:您可以使用 Vec 将矩阵转换为其列的向量,然后(多)将各个列分配给新变量,以便

[P] = Vec(factor(120));

P设置为不可约因子的向量并且

[P, E] = Vec(factor(120));

PE 分别设置为不可约因子和多重性。但是更混乱的 factor()[1] 构造会快一点(因为调用 Vec 会导致额外的副本)。