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

C ++のプライム周波数を持つ配列要素?


配列 同じデータ型の要素のコンテナです。

プライム周波数 配列の要素の出現回数が素数であることを意味します。

したがって、これらの定義に基づいて、プライム周波数を持つ配列要素を見つける問題があります。配列の文字列が与えられます。文字の頻度を見つけて、頻度が素数であるかどうかを確認してから、素数の頻度を持つ要素を数える必要があります。

例を見てみましょう

Input: str = “helloworld”
Output: 2

説明

文字の出現回数は-

h -> 1
e -> 1
l -> 3
o -> 2
w-> 1
r -> 1
d -> 1

lは素数回、つまり3回発生し、oは素数回、つまり2回発生します。

文字列のトラバースを開始し、C ++のマップを使用して各文字の出現をカウントし、出現が素数であるかどうかを確認します。プライムの場合はカウントをインクリメントし、そうでない場合はカウントをインクリメントしません。

アルゴリズム

要素の素数頻度をチェックするために、の要素の出現をチェックし、カウントが素数であるかどうかをチェックします。このために、検討中のマップを使用します。

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int check_prime(int n) {
   if (n <= 1)
      return 0;
   if (n <= 3)
      return 1;
   if (n % 2 == 0 || n % 3 == 0)
      return 0;
   for (int i = 5; i * i <= n; i = i + 6)
      if (n % i == 0 || n % (i + 2) == 0)
         return 0;
      return 1;
}
int countPrimeFrequent(string s) {
   int count = 0;
   unordered_map<char, int> mp;
   for (int i = 0; i < s.length(); i++)
      mp[s[i]]++;
   for (auto it = mp.begin(); it != mp.end(); it++) {
      if (check_prime(it->second))
         count++;
   }
   return count;
}
int main() {
   string s = "helloworld";
   cout << countPrimeFrequent(s);
   return 0;
}

出力

The repeat elements of the array are : 2

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

    n個の素数とkを含む配列arr[n]が与えられます。タスクは、配列内のk番目の素数ごとの積を見つけることです。 同様に、配列arr [] ={3、5、7、11}およびk =2があるため、すべてのk、つまり5および11の後の素数は、5x11 =55となる積を見つけて、結果を出力する必要があります。出力として。 素数とは何ですか? 素数は自然数であり、1またはその数自体を除いて他の数で割ることはできません。素数のいくつかは2、3、5、7、11、13などです。 例 Input: arr[] = {3, 5, 7, 11, 13} k= 2 Output: 55 Explanation: ev

  2. C ++のO(1)空間で要素0からN-1の定数配列で重複を検索します

    0からn-1までの数字のリストがあるとします。数は可能な限り何度でも繰り返すことができます。余分なスペースをとらずに繰り返し番号を見つける必要があります。 n =7の値で、リストが[5、2、3、5、1、6、2、3、4、5]のような場合。答えは5、2、3になります。 これを解決するには、次の手順に従う必要があります- リスト内の各要素eについて、次の手順を実行します- sign:=A[eの絶対値] 符号が正の場合は負にします それ以外の場合は繰り返しです。 例 #include<iostream> #include<cmath> using namespace