Related Articles

# Array elements with prime frequencies

• Difficulty Level : Basic
• Last Updated : 17 Jun, 2021

Given a string. The task is to find the count of characters whose number of occurrences is prime.
Examples

```Input : str = "geeksforgeeks"
Output : 3
Count of occurrences of characters are:
g -> 2
e -> 4
k -> 2
s -> 2
f -> 1
o -> 1
r -> 1
So, g, k and s occurs prime number of times i.e. 2

Input : str = "aabbcc"
Output : 3```

Start traversing the string and count the occurrences of each character using a map in C++ and check whether an occurrence is prime or not. If prime then increment the count otherwise not.
Below is the implementation of the above approach:

## C++

 `// C++ program to find count of numbers``// with prime frequencies` `#include ``using` `namespace` `std;` `// Function to check if a``// number is prime``bool` `check_prime(``int` `n)``{``    ``// Corner cases``    ``if` `(n <= 1)``        ``return` `false``;``    ``if` `(n <= 3)``        ``return` `true``;` `    ``// This is checked so that we can skip``    ``// middle five numbers in below loop``    ``if` `(n % 2 == 0 || n % 3 == 0)``        ``return` `false``;` `    ``for` `(``int` `i = 5; i * i <= n; i = i + 6)``        ``if` `(n % i == 0 || n % (i + 2) == 0)``            ``return` `false``;` `    ``return` `true``;``}` `// Function to find count of numbers``// with prime frequencies``int` `countPrimeFrequent(string s)``{``    ``int` `count = 0;` `    ``// create a map to store``    ``// frequency of each character``    ``unordered_map<``char``, ``int``> mp;` `    ``// Store frequency of each character``    ``// in the map``    ``for` `(``int` `i = 0; i < s.length(); i++)``        ``mp[s[i]]++;` `    ``// now iterate the map and characters``    ``// with prime occurrences``    ``for` `(``auto` `it = mp.begin(); it != mp.end(); it++) {` `        ``// if prime then increment count``        ``if` `(check_prime(it->second))``            ``count++;``    ``}` `    ``return` `count;``}` `// Driver Code``int` `main()``{``    ``string s = ``"geeksforgeeks"``;` `    ``cout << countPrimeFrequent(s);` `    ``return` `0;``}`

## Java

 `// Java program to find count of numbers``// with prime frequencies` `import` `java.util.*;` `class` `GFG``{` `    ``// Function to check if a``    ``// number is prime``    ``static` `boolean` `check_prime(``int` `n)``    ``{``        ``// Corner cases``        ``if` `(n <= ``1``)``        ``{``            ``return` `false``;``        ``}``        ``if` `(n <= ``3``)``        ``{``            ``return` `true``;``        ``}` `        ``// This is checked so that we can skip``        ``// middle five numbers in below loop``        ``if` `(n % ``2` `== ``0` `|| n % ``3` `== ``0``)``        ``{``            ``return` `false``;``        ``}` `        ``for` `(``int` `i = ``5``; i * i <= n; i = i + ``6``)``        ``{``            ``if` `(n % i == ``0` `|| n % (i + ``2``) == ``0``)``            ``{``                ``return` `false``;``            ``}``        ``}` `        ``return` `true``;``    ``}` `    ``// Function to find count of numbers``    ``// with prime frequencies``    ``static` `int` `countPrimeFrequent(String s)``    ``{``        ``int` `count = ``0``;` `        ``// create a map to store``        ``// frequency of each character``        ``Map mp = ``new` `HashMap<>();` `        ``// Store frequency of each character``        ``// in the map``        ``for` `(``int` `i = ``0``; i < s.length(); i++)``        ``{``            ``if` `(mp.containsKey(s.charAt(i)))``            ``{``                ``mp.put(s.charAt(i), mp.get(s.charAt(i)) + ``1``);``            ``}``            ``else``            ``{``                ``mp.put(s.charAt(i), ``1``);``            ``}``        ``}` `        ``// now iterate the map and characters``        ``// with prime occurrences``        ``for` `(Map.Entry entry : mp.entrySet())``        ``{` `            ``// if prime then increment count``            ``if` `(check_prime(entry.getValue()))``            ``{``                ``count++;``            ``}``        ``}` `        ``return` `count;``    ``}` `    ``// Driver Code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``String s = ``"geeksforgeeks"``;` `        ``System.out.println(countPrimeFrequent(s));``    ``}``}` `// This code has been contributed by 29AjayKumar`

## Python3

 `# python3 program to find count of numbers``# with prime frequencies` `# Function to check if a``# number is prime` `def` `check_prime(n):``    ``# Corner cases``    ``if` `(n <``=` `1``):``        ``return` `False``    ``if` `(n <``=` `3``):``        ``return` `True``  ` `     ``# This is checked so that we can skip``     ``# middle five numbers in below loop``    ``if` `(n ``%` `2` `=``=` `0` `or` `n ``%` `3` `=``=` `0``):``        ``return` `False``  ` `    ``for` `i ``in` `range``(``5``,n``+``1``,``6``):``        ``if` `(n ``%` `i ``=``=` `0` `or` `n ``%` `(i ``+` `2``) ``=``=` `0``):``            ``return` `False``    ``return` `True`  `# Function to find count of numbers``# with prime frequencies``def` `countPrimeFrequent(s):``    ``count ``=` `0``    ``# create a map to store``    ``# frequency of each character``    ``mp``=``{}``  ` `    ``# Store frequency of each character``    ``# in the mp``    ``for` `i ``in` `range``(``0``,``len``(s)):``        ``mp.setdefault(s[i],``0``)``        ``mp[s[i]]``+``=``1``    ` `    ``# now iterate the map and characters``    ``# with prime occurrences``    ``for` `i ``in` `mp.keys():``        ``# if prime then increment count``        ``if` `(check_prime(mp[i])):``            ``count``+``=``1``    ``return` `count;` `# Driver Code``s ``=` `"geeksforgeeks"``print``(countPrimeFrequent(s))``# This code is improved by sahilshelangia`

## C#

 `// C# program to find count of numbers``// with prime frequencies``using` `System;``using` `System.Collections.Generic;` `class` `GFG``{` `    ``// Function to check if a``    ``// number is prime``    ``static` `Boolean check_prime(``int` `n)``    ``{``        ``// Corner cases``        ``if` `(n <= 1)``        ``{``            ``return` `false``;``        ``}``        ``if` `(n <= 3)``        ``{``            ``return` `true``;``        ``}` `        ``// This is checked so that we can skip``        ``// middle five numbers in below loop``        ``if` `(n % 2 == 0 || n % 3 == 0)``        ``{``            ``return` `false``;``        ``}` `        ``for` `(``int` `i = 5; i * i <= n; i = i + 6)``        ``{``            ``if` `(n % i == 0 || n % (i + 2) == 0)``            ``{``                ``return` `false``;``            ``}``        ``}` `        ``return` `true``;``    ``}` `    ``// Function to find count of numbers``    ``// with prime frequencies``    ``static` `int` `countPrimeFrequent(String s)``    ``{``        ``int` `count = 0;` `        ``// create a map to store``        ``// frequency of each character``        ``Dictionary<``char``, ``int``> mp = ``new` `Dictionary<``char``,``int``>();` `        ``// Store frequency of each character``        ``// in the map``        ``for` `(``int` `i = 0; i < s.Length; i++)``        ``{``            ``if` `(mp.ContainsKey(s[i]))``            ``{``                ``var` `v = mp[s[i]] + 1;``                ``mp.Remove(s[i]);``                ``mp.Add(s[i], v);``            ``}``            ``else``            ``{``                ``mp.Add(s[i], 1);``            ``}``        ``}` `        ``// now iterate the map and characters``        ``// with prime occurrences``        ``foreach``(KeyValuePair<``char``, ``int``> entry ``in` `mp)``        ``{``            ``// if prime then increment count``            ``if` `(check_prime(entry.Value))``            ``{``                ``count++;        ``            ``}``        ``}``        ``return` `count;``    ``}` `    ``// Driver Code``    ``public` `static` `void` `Main(String[] args)``    ``{``        ``String s = ``"geeksforgeeks"``;` `        ``Console.WriteLine(countPrimeFrequent(s));``    ``}``}` `// This code is contributed by Rajput-Ji`

## Javascript

 ``
Output:
`3`

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

My Personal Notes arrow_drop_up