DANH SÁCH BÀI VIẾT Cách kiểm tra Số nguyên tố trong lập trình C/C++ Đếm số lượng số nguyên tố nhỏ hơn n lập trình C/C++ Liệt kê các số nguyên tố nhỏ hơn n lập trình C/C++ Đếm số lượng số nguyên tố trong mảng lập trình C/C++ Liệt kê các số nguyên tố trong mảng lập trình C/C++ Tìm hiểu về thuật toán Sàng nguyên tố (sàng Eratosthenes)
Trong bài viết này chúng ta sẽ cùng đi giải quyết bài toán đếm số lượng số nguyên tố trong mảng với lập trình C/C++.
Đếm số lượng số nguyên tố có trong mảng
Giả sử ta đang có mảng A bao gồm n phần tử, yêu cầu bài toán là hãy đếm số lượng số nguyên tố trong mảng A.
Ý tưởng bài toán này sẽ là, đầu tiên chúng ta sẽ viết một hàm để kiểm tra một số có phải là số nguyên tố hay không. Sau đó chúng ta khai báo 1 biến đếm với giá trị ban đầu bằng 0, ta duyệt vòng lặp từ 1 tới n để duyệt hết được n phần tử trong mảng A, và gọi hàm kiểm tra xem phần tử thứ A[i] có phải là số nguyên tố không, nếu là số nguyên tố tăng biến đếm lên 1, sau khi hết vòng lặp ta in ra biến đếm chính là số lượng số nguyên tố.
Ta có hàm kiểm tra một số có phải là số nguyên tố hay không như sau.
bool checkNT(int n){
if(n<2) return false;
int sq = sqrt(n);
for(int i=2;i <=sq ;i++){
if(n % i){
return false;
}
}
return true;
}
Nếu bạn không hiểu hàm này thì đọc bài viết dưới đây nhé, mình có giải thích tương đối rõ rằng rồi.
>>XEM THÊM: Khóa học lập trình C/C++ từ A-Z cho người mới – Giảm giá 40% hôm nay
Chương trình hoàn chỉnh
- Khóa học lập trình C/C++ từ A-Z cho người mới – Giảm giá 40% hôm nay
- Khóa học Java cơ bản dành cho người mới bắt đầu- Giảm 40% hôm nay
- Khóa học lập trình Android từ cơ bản đến thành thạo – Giảm ngay 40%
#include <stdio.h>
#include <math.h>
//Hàm ki?m tra s? nguyên t?
bool checkNT(int n)
{
if(n<2) return false;
int sq = sqrt(n);
for(int i=2;i <=sq ;i++){
if(n % i == 0){
return false;
}
}
return true;
}
int main()
{
int n;
printf("Nhap n:");
scanf("%d", &n); //Nh?p n từ bàn phím
int A[n]; //Khai bao mảng A gồm n phần tử
//Duyệt vòng lặp nhập n phần tử A
for(int i=0;i<n;i++){
printf("A[%d] = ", i);
scanf("%d", &A[i]); //Nhập phần tử thứ A[i]
}
int dem = 0; //Kh?i t?o bi?n dem = 0
for(int i=0;i<n;i++){
if(checkNT(A[i]) == true)
dem++; //N?u i là s? nguyên t? thì tang bi?n d?m len 1
}
printf("So luong so nguyen to trong mang: %d", dem);//In so luong so nguyen to
}
Cảm ơn bạn đã đọc bài viết! CHÚC HỌC TỐT NHÉ!
[Xem tất cả bài viết chủ đề C/C++ tại đây]