Đếm số nguyên tố (theo thứ tự từ nhỏ đến lớn) trong mảng một chiều

Đề bài:
Cho dãy số A có n phần tử chỉ bao gồm các số nguyên dương (không quá 9 chữ số). Hãy xác định các số
nguyên tố trong dãy và đếm xem mỗi số xuất hiện bao nhiêu lần.
INPUT
10
1 2 3 3 2 1 3 2 7 8
OUTPUT
2 3
3 3
7 1
Giải:


#include<iostream>
#include<cmath>
using namespace std;
int n;
int a[100];

void input() {
 cin >> n;
 for(int i = 0; i < n; i++)
  cin >> a[i];
}

bool nto(int x) {
 if(x < 2) return false;
 for(int i = 2; i <= sqrt(x); i++)
  if(x%i == 0)
   return false;
 return true;
}

bool NotInArray(int t, int b[100], int m) {
 for(int i = 0; i < m; i++)
  if( t == b[i] )
   return false;
 return true;
}

int dem(int x) {
 int dem = 0;
 for(int i = 0; i < n; i++) {
  if(a[i] == x)
   dem++;
 }
 return dem;
}

void output() {
 int b[100];
 int m = 0;
 for(int i = 0; i < n; i++) {
  if(NotInArray(a[i],b,m) && nto(a[i]))
   b[m++] = a[i];
 }

 for(int i = 0; i < m; i++) {
  for(int j = i + 1; j < m; j++) {
   if(b[i] > b[j]) {
    int t = b[i];
    b[i] = b[j];
    b[j] = t;
   }
  }
 }
 for(int i = 0; i < m; i++)
  cout << b[i] << " " << dem(b[i]) << endl;

}

int main() {
 input();
 output();
}

Nhận xét

Bài đăng phổ biến từ blog này

Đổi chỗ chữ số đầu tiên và chữ số cuối cùng của một số

Chuyển đơn vị đo nhiệt độ C và F

Tìm số đẹp (lộc phát)