2016-05-10 12 views
0

私はpari/gpを初めて使っています。私はすべての素因数を見つけるためにfactorintを使用し、行列を返します。 行列の中で最大の番号を見つけようとしましたが、行と列の長さを見つけることができませんでした。また、どのように私は各要素を比較するためにifを使うことができますか?私のpが上に生成されています。PARI/GP:整数の最大素因数を得るには?

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); 

ありがとうございます。

答えて

1

factorint(p)は常にnx2行列を返します。npの素因数の数です。最初の列は主な要因です。 2番目の列はそれらの多重度のためのものです。

これで必要なのは、最初の列の最大要素を見つけることだけです。次のように行うことができます。

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

ところで、ベクトルvの長さがちょうど#v PARI/GPです。

+0

最大プライムが最後の行のプライムではないことがありますか?それで 'factors [matsize(factors)[1]、1] 'を使うことができます。 –

関連する問題