Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Đếm phần tử xuất hiện số lần nguyên tố trong mảng C

Đế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