問題タブ [factoring]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
542 参照

python - いくつかの繰り返しを伴う非プライムファクタリング

たとえば、1260のように数値係数があるとします。

これらの数値から可能なすべてのサブプロダクト、つまり素数分解だけでなく、因子の合計がmax_product未満のすべての因数分解を使用して、Pythonの組み合わせで行うのに最適な方法はどれですか?

素因数から組み合わせを行う場合、組み合わせていない残りの部分がわからないため、製品の残りの部分をリファクタリングする必要があります。

除数関数を改良して、サイズ順に除数の代わりに除数のペアを生成することもできますが、それでも12000までの製品の数に対してこれを行うにはコストがかかります。製品は常に同じでなければなりません。

私は除数ルーチンにリンクされていましたが、他のコードに採用することを証明するために努力する価値はありませんでした。少なくとも私の除数関数は、sympyの約数関数よりも著しく高速です。

このコードを再利用する唯一の問題は、除数を因数分解ふるいにリンクするか、除数の除数のある種のitertools.productをペアで実行することです。これは、順序どおりに並べ替えるのではなく、ペアとして提供します。

結果の例は次のようになります。

おそらく、除数が数である数にリンクできる、より小さな除数用のふるいまたは動的計画法ソリューションを作成するための何らかの方法が必要になるでしょう。ただし、重複を避けるのは難しいようです。すべての数の完全な因数分解を保存せずに因数分解を高速化するために、各数の最大の素因数を格納する1つのふるい関数を用意しています...おそらくそれを適応させることができます。

更新:因子の合計は積に近いはずなので、おそらく答えには10未満の因子が多数あります(最大14因子)。

UPDATE2: これが私のコードですが、2を超える部分に対して再帰的または反復的に複数の削除を行う方法を理解し、字句分割を掘り下げて、重複を生成するジャンプビットパターンを置き換える必要があります(1回の置換でのみ哀れなヒット数、 single_partition内の「単一要素パーティション」の通過はカウントされません):

洗練非素因数部分で最大5つの因数分解を持つ因数分解のみを取得できてうれしいです。私は手作業で、最大5つの同じ要因に対する非減少の取り決めがこの形式に従うことを発見しました。

解決 策私は受け入れられた答えを細かい解決策から削除しませんが、それは仕事にとって非常に複雑です。プロジェクトオイラーから、ニュージーランドのオービフォールドからのこのヘルパー関数のみを明らかにします。これは、最初に素因数を必要とせずに、より高速に動作します。

私のタイミングデコレータによるPython2.7での4.85秒での彼の実行の問題88に関連する解決策と、サイコを使用した場合は2.6.6で、サイコを使用しない場合は2.7で3.7秒のカウンタを検出して停止条件を最適化した後。私自身のコードの速度は、受け入れられた回答のコード(私が追加したソートを削除)の30秒から、Python 2.6.6の2.25秒(psycoなしの2.7)およびpsycoの782ミリ秒になりました。

0 投票する
1 に答える
1718 参照

prime-factoring - 310桁の10進数の自動素因数分解

ここに、310桁の10進整数を素数に分解できるソフトウェアがありますか?120桁の因数分解に使用できたmsieveがありましたが、310桁がmsieveの最大許容数である308桁を超えています。

PS:因数分解する数には2つの素数があり、p-1、p+1およびその他の簡単で高速な因数分解方法は失敗する可能性があります。

更新:GGNFSのみが機能するようで、因数分解を自動化するためのPythonスクリプトがいくつかあります。

0 投票する
3 に答える
239 参照

php - PHP 再帰エラー ファクタリング

だから私は再帰のアイデアに慣れていないので、この単純なコードを書いて数値を因数分解します($ n)これはコードです:

これがコードの出力です。

だから私の質問は、なぜこれが完了する前に停止するのですか?

0 投票する
4 に答える
219691 参照

php - 2つの数字が何かに追加するものを見つけて何かに掛ける

ねえ、私はファクタリングプログラムを作成しています。指定された数に倍数の2つの数を見つけ、指定された数に追加する効率的な方法について、誰かが私にアイデアを教えてくれるかどうか疑問に思っています。

たとえば、私は持っているかもしれません

(a)(b)= 6

a + b = 5

したがって、基本的には、aとbの値を見つける方法が必要です。この場合、2と3になります。

どこから始めればいいのか、誰か教えてもらえますか?負の数も使用を検討する必要があります。

0 投票する
2 に答える
314 参照

c# - C#で大きな2D数値グリッドを数学的にナビゲートする

非常に大きな仮想グリッド内で関心のある特定の座標を見つけようとしています。寸法が大きいため、このグリッドは実際にはメモリに存在しません。この質問のために、それらの次元をであると仮定しましょう(Width x Height) = (Int32.MaxValue x Int32.MaxValue)

グリッドに関する既知のデータ:

  • グリッドの寸法= (Int32.MaxValue x Int32.MaxValue)
  • 任意(x, y)の座標での値=XとYの積= (x * y)

(x * y)上記の有限数の大きなセットを考えると、値がの累乗である座標のセットを計算する必要がありますeeこの場合は2だとしましょう。

グリッドをループすることはオプションではないので、私はループすることを考えました:

これは私たちにユニークな力のセットを与えます。ここで、各パワーがどの座標に存在するかを調べる必要があります。取りましょう2^3=8。上のグリッドに示されているように、8つは4つの座標に存在します(8,1), (4,2), (2,4) & (1, 8)

明らかに、ここでの問題は、数値8の複数の因子を見つけることですが、これは、数値が大きい場合には実用的ではなくなります。これを達成する別の方法はありますか?私は何かを逃していますか?

  • 因子がメモリに存在しないため、セットの使用は機能しません。
  • 問題の数が常にの累乗になることを知って因数分解する創造的な方法はありeますか?
0 投票する
2 に答える
591 参照

c++ - C ++のポラードrhoアルゴリズムは因数を見つけられません

大きな数を因数分解するためにポラード ロー アルゴリズムを実装しようとしています。gmp パッケージを使用しています。アルゴリズムは、「アルゴリズムの概要」から取得されます。症状は、while ループが壊れないことです。私の考えは、実装に何かが欠けているということです。

私のコードは次のとおりです。


}

コードの終わり

これは、実行を強制終了する前に端末に表示される内容の一部です。



ちょっと急いでいたので、プリントアウトの見栄えが悪くてすみません。どんな助けにも感謝します。

//ヘレン