Đế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:
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
Đăng nhận xét