ホームページ  >  記事  >  バックエンド開発  >  STLを使用して因子の数で並べ替えます

STLを使用して因子の数で並べ替えます

王林
王林転載
2023-09-07 10:09:031169ブラウズ

STLを使用して因子の数で並べ替えます

STL を使用してベクトルを並べ替えるのは簡単です。このタスクを実行するには、有名な sort() 関数を使用できます。本当の課題は、各数値の因数の数を数えることです。

因数は、別の数値を完全に除算できる数値、つまり余りがゼロになる数値です。

すべての数値をループして係数を計算することも 1 つの方法かもしれませんが、この記事では最適化を試み、効率的な解決策に到達します。

###問題文###

指定された配列を、各数値の因数の数に基づいて昇順に並べ替えます。したがって、因子の数が最も少ない数値が先頭にあり、因子の数が最大の数値が末尾にある必要があります。同じ数の因数を持つ数値は、元の配列の順序で配置する必要があります。配列は STL を使用してソートできます。

Example

の中国語訳は次のとおりです:

Example

リーリー

したがって、係数に従って数値を昇順に並べ替えると、3 2 4 10 15 20 という出力が得られます。

リーリー ######説明###### リーリー したがって、係数に従って数値を昇順に並べ替えると、次の出力が得られます: 19 5 9 21 12

###方法###

各数値の因数の数を求めます。

数値とその因数のペアを格納するベクトルを作成します。

  • ベクトルをソートし、結果を返します。

  • 数値の因数の数を求めます

  • ブルート フォース
  • の中国語訳は次のとおりです:

    ブルート フォース

  • 素朴なアプローチは、1 から n までのすべての数値をループして、それらが n を割るかどうかを調べることです。このようにして、各数値の因数の数を計算できます。

Example

の中国語訳は次のとおりです:

Example

以下は、総当たりで数値のすべての約数を計算する C プログラムです。

リーリー ###出力### リーリー

効率的な方法

数値の因数はペアで存在します。

たとえば、12 の約数は 1、2、3、4、6、12 です。

ただし、(1,12)、(2,6)、(3,4) のように視覚化できます。

したがって、約数を見つけた場合、n までたどることなく別の約数を見つけることもできます。

したがって、効率的な方法は、数値の平方根までのみをたどってから、対で約数を計算することです。

Example

の中国語訳は次のとおりです:

Example

以下は、数値の約数を計算するための C プログラムです。

リーリー ###出力### リーリー

ここで、上で説明した方法の 2 番目と 3 番目のステップに従うことができます。

因子の数に基づいて並べ替えられたベクトルを出力する C プログラムの例

リーリー ###出力### リーリー ###結論は###

この記事では、整数の因数の数に基づいてベクトルを並べ替えました。

私たちはいくつかの例について話し合った後、方法について話し合いました。

この問題の核心は、数値の約数の数を見つけることです。この問題を解決するには、強引な方法と効率的な方法の 2 つの方法があります。私たちは両方のアプローチを検討し、効率的なアプローチを使用して最終的なプログラムを作成しました。

以上がSTLを使用して因子の数で並べ替えますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。