Bài toán: Viết hàm đếm số lượng số nguyên tố có trong mảng một chiều gồm các số nguyên dương.
- Input
1 3 5 7 9 5 4 12
- Output
So luong cac so nguyen to la: 4
Giải thích: Ở ví dụ trên có các số nguyên tố là: 3, 5, 5, 7
Ý tưởng đếm số lượng số nguyên tố có trong mảng
- Đầu tiên bạn phải viết một hàm check để kiểm tra số đó có phải là số nguyên tố hay không. Hàm check sẽ trả về kiểu bool có giá trị true nếu đó là số nguyên tố. Nếu các bạn chưa biết cách kiểm tra một số có phải là số nguyên tố hay không thì có thể xem tại đây.
- Ta khởi tạo một biến count có giá trị là 0. Tiến hành duyệt hết các phần tử trong mảng nếu có phần tử nào là số nguyên tố thì ta tiến hành tăng giá trị của biến count lên một giá trị.
- Sau khi kết thúc hàm thì ta trả về giá trị của biến count chính là số lượng số nguyên tố có trong mảng.
Xây dựng hàm đếm số lượng số nguyên tố có trong mảng:
Ta có thể xây dựng các hàm như sau
bool check(int n) { //Nếu n là số nguyên tố return true; //Nếu n không phải là số nguyên tố return false; } int dem(int a[]) { int count = 0; //Duyệt các phần tử trong a[] //Nếu a[i] là số nguyên tố count++; //Sau khi đã duyệt hết mảng a[i] return count; }
Code tham khảo
#include<iostream> #include<math.h> using namespace std; bool check(int n) { if (n <= 1) return false; for (int i = 2; i <= sqrt(n); i++) if (n % i == 0) return false; return true; } int dem(int a[], int n) { int count = 0; for (int i = 0; i < n; i++) { if (check(a[i]) == true) count++; } return count; } void nhap(int a[], int n) { cout << "-----Nhap mang-----"<<endl; for (int i = 0; i < n; i++) { cout << "Nhap phan tu a[" << i << "]: "; cin >> a[i]; } } int main() { int a[1000]; int n; cout << "Nhap n: "; cin >> n; nhap(a,n); cout << "So luong cac so nguyen to la: " << dem(a,n)<<endl; system("pause"); return 0; }
Sau khi chạy chương trình trên ta có kết quả sau
Nhap n: 4 -----Nhap mang----- Nhap phan tu a[0]: 1 Nhap phan tu a[1]: 3 Nhap phan tu a[2]: 4 Nhap phan tu a[3]: 5 So luong cac so nguyen to la: 2
Bài viết mình đến đây là kết thúc. Cám ơn các bạn đã theo dõi !
Trả lời