2017-10-19 9 views
2

PARI/GPは、t_INTの最小素因数を見つけたり、そうでなければ整数の部分分解を行う関数を持っていますか?例えば最小素因数を見つける関数

、私は数がある場合:

a=261432792226751124747858820445742044652814631500046047326053169701039080900441047539208779404889565067 

aは2個の巨大な素因数を含んでいるので、それはfactor(a)を行うには長い時間がかかります。しかし、17aの約数であることが分かります。

もちろんこの場合、私は要因を見つけるためにちょうどforprime(p=2,,a % p == 0 && return(p))または同様の試験区分を使用していた可能性があります。しかし、最小の要素が20桁の小数点を持っていたとすれば、それは実際的ではないと思われます。その場合、洗練された方法factorを使用したかったでしょう。

私はフラグのいくつかの種類が、私は部分的な因数分解して幸せになりますと言って、あるいは私が気にすべて最小非自明な除数であると言ってfactorを呼び出すことができますのであれば、それは理想的である、など

+0

[Lenstra楕円曲線分解](https://en.wikipedia.org/wiki/Lenstra_elliptic-curve_factorization)(小因子の取得を専門とする)の変形について考えましたか?それが何らかの要因を見つけたら、それを改変して中断することができます。 –

+0

@JosephWood PARIの 'factor'または' factorint'関数は、すでにそのアプローチの1つとして楕円曲線メソッドを使用しています。私は私自身の楕円曲線の実装をコード化することができることを知っていますが、PARI/GPに何か組み込みがあるかどうか尋ねていました。 –

+1

PARIライブラリには便利な 'Z_factor_until'関数があります。しかし、あなたが最も小さい素因を見つけたことを証明することは、一般的には簡単ではありません。一つの選択肢を選択してください:特別な数字でのみ働く、確かではなく、長い実行時間。小さな数字でしか動作しません。 – Charles

答えて

1

10^5缶より(補因子大きい例えば

factor(a, 10^5) 

を、そして10^5以下の要因のみが結果に表示されます。私の質問に非常に単純な部分的な答えはあなただけ言うことができるようにfactorは、オプションの引数limを持っているということです合成される!)。

factorintのオプションの引数は、ビットごとに「フラグ」が異なり、制限を指定することはできません。それはおそらく私を混乱させるものでした。例として:

factorint(a, 1+8) 

( "最終ECMを実行していない")フラグ1( "MPQSを避ける​​")と8を選択します。

関連する問題