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

Đếm số thuần nguyên tố trong một khoảng

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