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

素数の特定の配列から重複を削除するプログラムをC++で記述します


すべての素数で構成される配列Nサイズを指定したと仮定します。タスクは、指定された配列内の重複を見つけて削除することです。たとえば、

入力-1

N = 8
arr[ ] = { 2 ,2 ,2 ,3 ,3 ,3 ,5 ,7 }

出力

2 3 5 7

説明 −与えられた素数の配列には、「2」と「3」の重複がいくつかあります。重複を削除すると、出力は2 357になります。

入力-2

N = 5
arr[ ] = { 3, 2, 7, 5, 5}

出力

3 2 7 5

説明 −与えられた素数の配列には、重複を削除した後の「5」の重複がいくつかあります。出力は3 275になります。

この問題を解決するためのアプローチ

この問題では、番号が配列内でアクセスされているかどうかを確認する番号配列を使用します。配列要素にアクセスしない場合は、「1」として作成し、結果に挿入します。それ以外の場合は、要素を挿入する必要はありません。

  • 要素を含むベクトル配列のNサイズを入力します。

  • 整数のVector配列removeDuplicates(vector &arr、int size)は、配列とそのサイズを入力として受け取ります。

  • 現在の要素が訪問されているかどうかを検出および検証するために使用する整数配列。挿入中に配列内の要素のいずれかにアクセスした場合(つまり、「1」)、その特定の要素をベクトルにプッシュしません。それ以外の場合は、ベクトル配列内の要素をプッシュします。

  • 結果のベクトルには、一意の素数のみが含まれます。

#include<bits/stdc++.h>
using namespace std;
vector<int>removeDuplicates(vector<int>&arr, int size){
   int num[100] ={0};
   vector<int> vec;
   for(int i=0;i<size;i++){
      if(num[arr[i]] ==0){
         num[arr[i]]=1;
         vec.push_back(arr[i]);
      }
   }
   return vec;
}
int main(){
   int N= 8;
   vector<int>arr={2,2,2,3,3,3,5,7};
   vector<int>answer= removeDuplicates(arr,N);
   for(int i=0;i<answer.size();i++){
      cout<<removeDuplicates(arr,N)<<endl;
   }
   return 0;
}

出力

上記のコードを実行すると、出力は次のように出力されます。

2 3 5 7

重複を削除すると、出力は2 357になります。


  1. C++の配列内のすべての素数の積

    いくつかの要素を持つ整数配列arr[]が与えられた場合、タスクはその数のすべての素数の積を見つけることです。 素数は、1で割った数、またはその数自体です。または、素数は、1とその数自体を除いて他の数で割り切れない数です。 1、2、3、5、7、11など 与えられた配列の解を見つける必要があります- 入力 −arr [] ={11、20、31、4、5、6、70} 出力 − 1705 説明 −配列の素数は− 11、31、5であり、それらの積は1705 入力 − arr [] ={1、2、3、4、5、6、7} 出力 − 210 説明 −配列の素数は− 1、2、3、5、7

  2. エラトステネスのふるいを実装して、指定された範囲の素数を生成するC++プログラム

    これは、エラトステネスのふるいを実装して、指定された範囲間で素数を生成するC++プログラムです。この方法では、すべての要素を含む整数配列がゼロに初期化されます。 これは、ネストされたループ内で各非素元要素のインデックスが1としてマークされている場所に続きます。素数は、インデックスが0とマークされているものです。 アルゴリズム Begin    Declare an array of size n and initialize it to zero    Declare length, i, j    Read length &nbs