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

C++で指定された配列から素数を加算することによって取得できる個別の合計の数


素数と非素数を含む2つの配列が与えられます。目標は、各配列の素数のペアの個別の合計の数を見つけることです。

これを行うには、各配列から2つの素数のペアを作成し、それらの合計を取得して、set合計に追加します。最終的に、セットのサイズは素数の個別の合計の数になります。

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

入力

Arr1[] = { 1,2,3 } Arr2[] = { 2,3,4}

出力

Distinct Sums of primes :3

説明

Prime pairs (2,2), (2,3), (3,2), (3,3).
Unique sums are 4,5,6

入力

Arr1[] = { 1,4,6 } Arr2[] = { 2,3,5 }

出力

Distinct Sums of primes :0

説明

Arr1[] has no prime number. Prime pairs do not exist.

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

  • 正の数には2つの配列Arr1[]とArr2[]があり、長さにはlen1とlen2があります。

  • 関数isprime(int num)は、numが素数の場合は1を返し、それ以外の場合は0を返します。

  • 関数prime_Sums(int arr1 []、int arr2 []、int l1、int l2)は両方の配列を受け取り、素数のペアの個別の合計のカウントを返します。

  • 個別の合計を格納するには、set合計を取ります。

  • forループを使用して両方の配列の各要素をトラバースします。

  • isprime(arr1 [i])&&isprime(arr2 [j])かどうかを確認します。 trueの場合、合計をtmp =arr1 [i] +arr2[j]とします。

  • sum.insert(tmp)

    を使用して設定するtmpを追加します
  • 最後に、素数の個別の合計であるsum.size()を結果として返します。

#include<bits/stdc++.h>
using namespace std;
int isprime(int num){
   if (num <= 1)
      return 0;
   for (int i = 2; i <= num/2; i++)
      if (num % i == 0)
         return 0;
   return 1; //if both failed then num is prime
}
int prime_Sums(int arr1[],int arr2[],int l1,int l2){
   int count=0;
   set sum;
   for (int i = 0; i < l1; i++){
      for(int j=0; j < l2; j++){
         if(isprime(arr1[i]) && isprime(arr2[j])){
            int tmp=arr1[i]+arr2[j];
            sum.insert(tmp);
         }
      }
   }
   return sum.size();
}
int main(){
   int Arr1[] = { 2, 3, 5 };
   int Arr2[] = { 2, 2, 4, 7 };
   int len1=sizeof(Arr1) / sizeof(Arr1[0]);
   int len2=sizeof(Arr2) / sizeof(Arr2[0]);
   cout<<"Distinct Sums of primes :"<<prime_Sums(Arr1,Arr2,len1,len2);
   return 0;
}

出力

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

Count of ways to spell a number with repeated digits are: 16

  1. C++で指定された3つのソートされた配列から最も近い3つの要素を検索します

    max(| A [i] – B [i] |、| B [j] – Cのように、3つのソートされた配列A、B、Cと、それぞれA、B、Cからの3つの要素i、j、kがあるとします。 [k] |、| C [k] – A [i] |)が最小化されます。したがって、A =[1、4、10]、B =[2、15、20]、およびC =[10、12]の場合、出力要素は10、15、10、これら3つはA、B、およびCからのものです。 A、B、Cのサイズがそれぞれp、q、rであるとします。次に、次の手順に従ってこれを解決します- i:=0、j:=0およびk:=0 ここで、i

  2. C++で1からNまでの概素数の数を見つける

    数Nがあるとします。1からNの範囲でほぼ素数を見つける必要があります。正確に2つの異なる因子がある場合、その数は概素数と呼ばれます。数には任意の数の非素因数を含めることができますが、2つの素因数である必要があります。したがって、Nが2の場合、出力は2になります。6と10の2つの数値があります。 ここでは、エラトステネスのふるいアプローチを使用します。より良いアイデアを得るために、次の実装を確認してください。 例 #include<iostream> #define N 100005 using namespace std; bool prime[N]; void SieveOfE