Đếm số phần tử khác nhau trong mảng xuất hiện số lần là số nguyên tố.
Ví dụ
Mảng: {1,2,2,0,1,5,2,5,0,0,1,1}
- 1: 4 lần (không nguyên tố)
- 2: 3 lần (nguyên tố)
- 0: 3 lần (nguyên tố)
- 5: 2 lần (nguyên tố)
Kết quả: 3 phần tử (2, 0, 5)
Chương trình
#include <iostream>
#include <map>
using namespace std;
bool isPrime(int n) {
if (n < 2) return false;
for (int i = 2; i*i <= n; i++)
if (n % i == 0) return false;
return true;
}
int countPrimeFreq(int arr[], int n) {
map<int, int> freq;
for (int i = 0; i < n; i++) freq[arr[i]]++;
int count = 0;
for (auto &p : freq)
if (isPrime(p.second)) count++;
return count;
}
int main() {
int arr[] = {1, 2, 2, 0, 1, 5, 2, 5, 0, 0, 1, 1};
int n = sizeof(arr)/sizeof(arr[0]);
cout << "So phan tu tan suat nguyen to: " << countPrimeFreq(arr, n);
return 0;
}
Kết quả
So phan tu tan suat nguyen to: 3