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

C++の配列内の複合要素のカウントと合計


正の整数の配列が与えられ、タスクは与えられた配列の複合要素の数と合計を計算することです。

合成数とは

与えられた整数のセットから、素数ではない数は、合成数でも素数でもない1を除いて、合成数と呼ばれます。代わりに、それは単位数です。したがって、数は、数1を除いて、素数または合成数のいずれかである可能性があることが明確に述べられています。

100までのコンポジットを以下に示します-

4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 
26, 27, 28, 30, 32, 33, 34, 35, 36, 38, 39, 40, 42, 44, 
45, 46, 48, 49, 50, 51, 52, 54, 55, 56, 57, 58, 60, 62, 
63, 64, 65, 66, 68, 69, 70, 72, 74, 75, 76, 77, 78, 80, 
81, 82, 84, 85, 86, 87, 88, 90, 91, 92, 93, 94, 95, 96, 
98, 99, 100

Input − array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Output − total count of composite numbers is: 5
      Sum of composite number is: 37

説明 − 4、6、8、9、10は、特定の配列に存在する合成数です。したがって、それらのカウントは5であり、それらの合計は4 + 6 + 8 + 9 + 10 =37

Input − array[] = {1, 2, 3, 4, 5}
Output − total count of composite numbers is: 1
      Sum of composite number is: 4

説明 − 4は、特定の配列に存在する唯一の合成数です。したがって、それらのカウントは1であり、それらの合計は4です

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

  • 正の整数の配列を入力します

  • サイズを計算する

  • 変数sumを初期化して、合成数の合計を格納します

  • 配列に存在する最大値を変数に格納します

  • 最大値まで素数を計算します

  • 配列全体をトラバースし、その数が素数であるかどうかを確認します。数が素数でない場合は合成数になり、そうである場合は、合成数の数を1増やし、その値を合計に加算します

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// Function to find and return the
// the count of the composite numbers
int compcount(int ar[], int num, int* sum){
   // storing the largest element of the array
   int max_val = *max_element(ar, ar + num);
   // Using sieve to find all prime numbers
   // less than or equal to max_val
   // Create a boolean array "prime[0..n]". A
   // value in prime[i] will finally be false
   vector<bool> pr(max_val + 1, true);
   // setting the values of 0 and 1 as
   // true for prime.
   pr[0] = true;
   pr[1] = true;
   for (int p = 2; p * p <= max_val; p++){
      // If prime[p] is not changed, then
      // it is a prime
      if (pr[p] == true){
         // Update all multiples of p
         for (int i = p * 2; i <= max_val; i += p){
            pr[i] = false;
         }
      }
   }
   // Count all composite
   // numbers in the arr[]
   int ans = 0;
   for (int i = 0; i < num; i++){
      if (!pr[ar[i]]){
         ans++;
         *sum = *sum + ar[i];
      }
   }
   return ans;
}
// Driver code
int main(){
   int ar[] = { 1, 2, 3, 4, 5 };
   int num = sizeof(ar) / sizeof(ar[0]);
   int sum = 0;
   cout << "Count of Composite Numbers = "<< compcount(ar, num, &sum);
   cout << "\nSum of Composite Numbers = " << sum;
   return 0;
}

出力

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

Count of Composite Numbers = 1
Sum of Composite Numbers = 4

  1. C++STLの配列合計

    アレイ は、同じデータ型の要素を連続したメモリ位置に格納する線形データ構造です。 配列の合計は、配列のすべての要素の合計です。 C ++プログラミング言語では、配列の合計を見つけることができる複数のメソッドがあります。 古典的な方法 配列のすべての要素の合計を見つける基本的な方法は、配列の要素をループして、要素の値を合計変数に追加することです。 アルゴリズム Step 1 : For i from 0 to n-1, follow step 2 ; Step 2 : sum = sum + arr[i] Step 3 : print sum. 例 #include <iostrea

  2. C++合計配列パズル

    配列 同じデータ型の複数の要素を格納するデータ構造です。値のセット全体を一度に保存できます。ただし、その長さは事前に定義する必要があります。 この合計配列パズルでは、nと言う明確なサイズの配列A1が与えられます。このパズルを解くために、位置が使用されている要素を除く配列のすべての要素の合計を格納するS1という配列を作成します。たとえば、S1 [3]が計算されている場合、位置4の要素を除くA1のすべての要素の合計が求められます。 例- Array A1 = {1,2,3,4,6} Output S1 = {15,14,13,12,10} 説明 −合計配列を計算するには、初期配列の各要素を合計