Yêu cầu của chúng ta là đếm 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 đó ra.
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 1 số là nguyên tố
/* Kiểm tra số a co phai la so nguyên tố khong, neu phai tra ve true */ int IsPrime(int a) { if (a < 2) return 0; for (int i = 2; i <= sqrt(a); i++) { if (a % i == 0) { return 0; } } return 1; }
Hàm đếm số lượng số nguyên tốtrong mảng
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("%d\t", a[i]); } } }
Chương trình liệt kê các nguyên tố trong mảng
#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ố */ int IsPrime(int a) { if (a < 2) return 0; for (int i = 2; i <= sqrt(a); i++) { if (a % i == 0) { return 0; } } return 1; } /* Đế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("%d\t", 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); } }