数字をこの数字と他の数字の中で最大の正方形の積に分解したいのですが、ある時点で固まっています。私は本当にいくつかの提案を感謝します。これは私がこれまで行ってきたことです:数字の中で最大の正方形を見つける方法(Java)
私は入力に数字をとり、素数に分解し、素数のシーケンスをArrayListに入れます。数字はある意味でソートされているので、シーケンス内の数字は増加しています。
例えば、
996 is 2 2 3 83
1000 is 2 2 2 5 5 5
100000 is 2 2 2 2 2 5 5 5 5 5
私の考えは今、シーケンス内の各要素の出現回数をカウントするので、出現回数が2で割り切れるならば、これは正方形です。
このようにして、2つで割り切れる最も右の要素が最大の正方形である別のシーケンスを得ることができます。
ArrayList
で発生をカウントする最も効率的な方法は何ですか?または、最大の広場を見つけるより良い方法はありますか?
私はあなたの最大の広場ロジックがオフになっているかもしれないと思います(正しく理解していれば)。 1000の最大二乗除数は100です。その結果、あなたのアルゴリズムが与えるものはありますか? – dkarp
数字はどれくらい大きいのですか? – MAK
dkarp、はい、あなたは正しいです、私は戦略を再考する必要があります、ありがとう! MAK、BigIntegersを使用しています。 –