C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++での一意の素因数の最大数


与えられたタスクは、Nが与えられた[1、N]の範囲で数が持つことができる一意の素因数の最大数を見つけることです。

例を使用して、私たちがしなければならないことを理解しましょう-

入力 − n =100

出力 − 3

説明 − [1、100]

の範囲で30を取りましょう

30 =3 * 2 *5=固有の素因数。したがって、[1、100]の範囲で、最大3つの固有の因子を見つけることができます。

入力 − n =300

出力 − 4

以下のプログラムで使用されるアプローチは次のとおりです

  • 関数MaxPrime()では、最初に(N <2)かどうかをチェックします。その場合は単にゼロを返し、そうでない場合は続行します。

  • 次に、エラトステネスのふるいを使用して、指定された数Nの前にあるすべての素数を見つけます。

  • int型の2つの変数pro=1とmax=0を初期化して、それぞれ製品と最終回答を格納します。

  • エラトステネスのふるいの中で、-pro =* p;

    と書くことにより、積がNより小さくなるまで、素数の最初のセットを乗算します。
  • (pro> N)かどうかを確認します。その場合は、最大値を返し、最大値に1を加算します。

  • ふるいの外でも、最大値を返します。

#include <bits/stdc++.h>
using namespace std;
int MaxPrime(int N){
   if (N < 2)
      return 0;
   // Using Sieve of Eratosthenes
   bool Arr[N+1];
   memset(Arr, true, sizeof(Arr));
   int pro = 1, max = 0;
   for (int p=2; p*p<=N; p++){
      if (Arr[p] == true){
         for (int i=p*2; i<=N; i += p)
            Arr[i] = false;
         /*Multiply first set of prime numbers while product remains smaller than N*/
         pro *= p;
         if (pro > N)
            return max;
         max++;
      }
   }
   return max;
}
//Main function
int main(){
   int N = 300;
   cout << MaxPrime(N);
   return 0;
}

出力

上記のコードを実行すると、次の出力が得られます-

4

  1. C++のCHAR_BIT

    CHAR_BITは、charのビット数です。これは、C++言語の「limits.h」ヘッダーファイルで宣言されています。 1バイトあたり8ビットです。 これがC++言語のCHAR_BITの例です 例 #include <bits/stdc++.h> using namespace std; int main() {    int x = 28;    int a = CHAR_BIT*sizeof(x);    stack<bool> s;    cout << "T

  2. Pythonプログラムの数値の一意の素因数の積

    この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 数nが与えられた場合、利用可能なすべての固有の素因数の積を見つけて返す必要があります。 例 Input: num = 11 Output: Product is 11 説明 ここで、入力数は11で、素因数は1つだけで、11です。したがって、それらの積は11です。 アプローチ1 i=2からn+1までのforループを使用して、iがnの因数であるかどうかを確認し、次にiが素数自体であるかどうかを確認します。そうであれば、製品を製品変数に格納し、iが=nになるまでこのプロセスを続けます。 例 def produ