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

C++で配列内の素数を数える


一連の数字が表示されます。目標は、その配列内の素数の数を見つけることです。

素数は、1とその数自体で割り切れる数です。それには2つの要素しかありません。最初の要素から最後の要素まで素数であるかどうかを確認し、これまでに見つかった素数の数を増やします。

数Nが素数であるかどうかを確認するには、[2からN / 2]の範囲の数が、Nを完全に除算するかどうかを確認します。そうであれば、素数ではありません。それ以外の場合は素数です。

例を挙げて理解しましょう。

入力 − arr [] ={1,2,3,4,5,6,7,8,9}

出力 −素数の数− 4

説明 −ここで、2,3,5,7は素数であり、1,4,6,8,9は非素数です。

入力 − arr [] ={11,12,4,61,23}

出力 −素数の数− 3

説明 −ここで、11,61,23は素数で、12.4は非素数です。

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

  • 乱数を含む整数配列arr[]を取ります。

  • 関数checkPrime(int num)は、渡された数値numが素数であるかどうかをチェックします。素数の場合は1を返し、そうでない場合は0を返します。

  • numが<=1の場合、素数ではないので、0を返します。

  • ここで、2からnum / 2まで、任意の数がnumを完全に除算する場合(num%i ==0)、numは非素数であり、0を返します。

  • それ以外の場合は1を返します。

  • 変数isprimeは、数が素数であるかどうかを示します(1は素数を意味します)

  • 変数countは、素数の数をarr []

    に格納します
  • メイントラバース配列全体の内部で、各要素arr [i]をcheckPrime(arr [i])に渡し、結果が1(isprime ==1)の場合は、カウントをインクリメントします。

  • 最後のカウントは、arr []

    の素数の数です。

#include <bits/stdc++.h>
using namespace std;
// Function to find if number is prime
int checkPrime(int num){
    if (num <= 1)
      { return 0; }
   // Check from 2 to half of arr[i]
   for (int j = 2; j <= num/2; j++){
      if (num % j == 0){
         return 0;
      }
      return 1;
   }
}
int main(){
   int arr[] = { 1,3,5,4,8,13,11 };
   int n = 7;
   int count=0;
   int isprime=0;
   for(int i=0;i<n;i++){
      isprime=checkPrime(arr[i]);
      if(isprime==1)
         count++;
   }
   cout<<"Count of number of primes in array : "<<count;
   return 0;
}

出力

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

Count of number of primes in array : 4

  1. C++で長方形の正方形の数を数える

    =Bとなるように、長さL、幅Bの長方形が与えられます。目標は、サイズLXBの長方形が収容できる正方形の数を見つけることです。 上の図は、サイズ3 X 2の長方形を示しています。2、2X2の正方形、6,1X1の正方形があります。 総正方形=6+ 2=8。 サイズLXBのすべての長方形には、1X1の正方形のL*B数があります。 最大の正方形のサイズはBXBです。 L =B =1の場合、正方形=1。 L =B =2の場合、正方形=1 + 4 =5(2X2の1、1X1の4) L =B =3の場合、正方形=1 + 4 + 9 =14(3X3の​​1、2X2の4、1

  2. C++で設定されたビット数に従って配列をソートします

    ここでは、セットビットに基づいて配列をソートするための1つの興味深い問題があります。配列内の要素のセットビット数が多い場合、それはセットビット数の少ない別の要素の前に配置されます。いくつかの数が12、15、7であると仮定します。したがって、設定されたビットは、基本的に2進表現の1の数です。これらは、1100(12)、1111(15)、および0111(7)です。したがって、並べ替えると次のようになります- 1111, 0111, 1100 (15, 7, 12) ここでは、最初にセットビットの数を見つける必要があります。次に、C++STLソート関数を使用してそれらをソートします。セットビット数