Liệt kê số nguyên tố trong mảng 1 chiều là một bài tập để chúng ta tiếp tục luyện tập kiến thức về mảng 1 chiều và hàm trong C. Bài tập này chúng ta sẽ cùng nhau từng bước, đầu tiên là cần viết hàm kiểm tra số nguyên tố, tiếp theo là duyệt qua từng số trong mảng để kiểm tra và in ra nếu nó là số nguyên tố.
Bài tập liệt kê số nguyên tố
/*
Bài tập: Đưa ra số lượng số nguyên tố có trong mảng 1 chiều.
Nếu có thì liệt kê các số nguyên tố có trong mảng 1 chiều.
*/
[wpcc-iframe loading=”lazy” title=”Bài 46. Liệt kê các số nguyên tố trong mảng” width=”720″ height=”405″ src=”https://www.youtube.com/embed/VUBGebNvTOU?feature=oembed” frameborder=”0″ allow=”accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share” allowfullscreen]
Lời giải tham khảo
Chúng ta cần làm các bước sau:
- Viết hàm kiểm tra số nguyên tố
- Viết hàm đếm số lượng số nguyên tố
- Viết hàm hiển thị các số nguyên tố trong mảng nếu mảng có số nguyên tố
Hàm kiểm tra số nguyên tố
/* Kiểm tra số nguyên tố */ bool IsPrime(int n) { if (n < 2) return false; for (int i = 2; i <= sqrt(n); i++) { if (n % i == 0) { return false; } } return true; }
Chi tiết hướng dẫn kiểm tra số nguyên tố bạn xem bài sau: hướng dẫn kiểm tra số nguyên tố
Hàm đếm số lượng số nguyên tố
int PrimeCount(int a[], int n) { int count = 0; for (int i = 0; i < n; i++) { if (IsPrime(a[i])) { count++; } } return count; }
Hàm liệt kê số nguyên tố trong mảng
void PrintPrime(int a[], int n) { for (int i = 0; i < n; i++) { if (IsPrime(a[i])) { printf("%dt", a[i]); } } }
Lời giải liệt kê số nguyên tố trong mảng
Dưới đây là toàn bộ code giải bài tập liệt kê số nguyên tố trong mảng, các bạn có thể tham khảo:
/* Bài tập: Đưa ra số lượng số nguyên tố có trong mảng 1 chiều. Nếu có thì liệt kê các số nguyên tố có trong mảng 1 chiều. */ #include <stdio.h> #include <math.h> #define MAX_SIZE 100 // sức chứa tối đa void NhapMang(int arr[], int n) { for (int i = 0; i < n; i++) { printf("Nhap arr[%d] = ", i); scanf("%d", &arr[i]); } } void XuatMang(int arr[], int n) { for (int i = 0; i < n; i++) { printf("narr[%d] = %d", i, arr[i]); } } /* Kiểm tra số nguyên tố */ bool IsPrime(int n) { if (n < 2) return false; for (int i = 2; i <= sqrt(n); i++) { if (n % i == 0) { return false; } } return true; } /* Đếm số lượng số nguyên tố */ int PrimeCount(int a[], int n) { int count = 0; for (int i = 0; i < n; i++) { if (IsPrime(a[i])) { count++; } } return count; } /* Liệt kê các số nguyên tố */ void PrintPrime(int a[], int n) { for (int i = 0; i < n; i++) { if (IsPrime(a[i])) { printf("%dt", a[i]); } } } int main() { int arr[MAX_SIZE]; int n; // số lượng phần tử của mảng // Kiểm tra số lượng phần tử là số dương + nhỏ hơn MAX_SIZE do { printf("Nhap n = "); scanf("%d", &n); } while (n <= 0 || n > MAX_SIZE); // Nhập mảng NhapMang(arr, n); // Xuất mảng XuatMang(arr, n); // Giải bài toán int primeCount = PrimeCount(arr, n); printf("nSo luong so nguyen to la %d", primeCount); if(primeCount > 0){ printf("nDanh sach so nguyen to: "); PrintPrime(arr, n); } }
Kết quả chạy:
PS G:c_courcesday_46> .PrimeNumberInArr.exe Nhap n = 5 Nhap arr[0] = 1 Nhap arr[1] = 2 Nhap arr[2] = 3 Nhap arr[3] = 4 Nhap arr[4] = 5 arr[0] = 1 arr[1] = 2 arr[2] = 3 arr[3] = 4 arr[4] = 5 So luong so nguyen to la 3 Danh sach so nguyen to: 2 3 5
Theo dõi lập trình không khó tại:
Thanh viết
khi mảng không có snt, muốn xuất ra số 0 thì phỉa làm sao ạ