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:

  1. Viết hàm kiểm tra số nguyên tố
  2. Viết hàm đếm số lượng số nguyên tố
  3. 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);
    }
}

By alaza7

Leave a Reply

Your email address will not be published. Required fields are marked *