Computer >> Máy Tính >  >> Lập trình >> C ++

Các phần tử của mảng có tần số nguyên tố trong C ++?

Mảng là một vùng chứa các phần tử của cùng một kiểu dữ liệu.

Tần suất chính có nghĩa là số lần xuất hiện phần tử của mảng là một số nguyên tố.

Vì vậy, dựa trên các định nghĩa này, bài toán tìm các phần tử mảng có tần số nguyên tố. Chúng tôi được cung cấp cho một chuỗi của mảng. Chúng ta phải tìm tần số của các ký tự và kiểm tra xem tần số có phải là tần số nguyên tố hay không và sau đó đếm các phần tử có tần số nguyên tố.

Hãy lấy một ví dụ,

Input: str = “helloworld”
Output: 2

Giải thích

Số lần xuất hiện của các ký tự là -

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

l xảy ra với số nguyên tố, tức là 3 và o xảy ra với số nguyên tố, tức là 2.

Bắt đầu duyệt qua chuỗi và đếm số lần xuất hiện của mỗi ký tự bằng bản đồ trong C ++ và kiểm tra xem một lần xuất hiện có phải là số nguyên tố hay không. Nếu là số nguyên tố thì tăng số lượng nếu không.

Thuật toán

Để kiểm tra tần số nguyên tố của các phần tử, chúng ta sẽ kiểm tra sự xuất hiện của các phần tử và kiểm tra xem số đếm có phải là số nguyên tố hay không. Đối với điều này, chúng tôi sẽ xem xét các bản đồ.

Ví dụ

#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;
}

Đầu ra

The repeat elements of the array are : 2