1. Bài tập tìm các số nguyên tố có trong mảng một chiều số nguyên bằng ngôn ngữ lập trình C

Bài tập này chúng ta sẽ sử dụng các kiến thức về số nguyên tố và kiến thức từ ngôn ngữ lập trình C như: cách nhập xuất cơ bản, cách sử dụng mảng một chiều và cách sử dụng hàm trong ngôn ngữ lập trình C.

Yêu cầu của bài tập đưa ra cho chúng ta là tìm các số nguyên tố có trong mảng một chiều số nguyên bằng ngôn ngữ C.

2. Lời giải

Đầu tiên để thực hiện bài toán này chúng ta cần có kiến thức cơ bản về ngôn ngữ lập trình C, các cách nhập xuất cơ bản trong C, mảng một chiều trong C và cách sử dụng hàm trong ngôn ngữ lập trình C.

Tiếp theo đó chúng ta cần phải biết số nguyên tố là gì?

Số nguyên tố là số tự nhiên lớn hơn 1 và chỉ có đúng hai ước số là 1 và chính nó.

Các bước thực hiện yêu cầu của bài tập tìm các số nguyên tố có trong mảng một chiều số nguyên bằng ngôn ngữ C như sau:

Bước 1: Ta khai báo một mảng tĩnh số nguyên có 100 ô nhớ int a[100].

Bước 2: Ta khai báo số nguyên int n là số lượng phần tử có trong mảng với điều kiện n>1 hoặc n<100 nếu không thỏa mãn thì yêu cầu nhập lại n.

Bước 3: Ta khởi tạo hàm bool KiemTraSoNguyenTo(int n) dùng để kiểm tra một số có phải là số nguyên tố hay không, trong hàm ta sử dụng if với điều kiện n<2 nếu thỏa mãn thì n không phải số nguyên tố (số nguyên tố là số lớn hơn 1); ta tạo một biến int count = 0 dùng để dếm số lượng ước của n, sử dụng vòng lặp for bắt đầu từ 2, kết thúc tại căn bậc hai của n (sqrt(n) để dùng được hàm này ta cần thêm thư viện math.h) và mỗi lần i tăng 1 để duyệt các số phần tử trong khoảng [2, canbac2(n)]; trong vòng lặp ta dùng if với điều kiện n % i == 0 (nếu n chia hết cho i) thì ta tăng biến count lên 1; nếu biến cout == 0 (n không có ước trong đoạn [2, canbac2(n)]) thì n là số nguyên tố ngược lại n không phải là số nguyên tố.

Bước 4: Ta khỏi tạo hàm void Nhap(int a[], int n) dùng để nhập dữ liệu từ bàn phím cho mảng. Trong hàm ta sử dụng vòng for bắt đầu từ int i =0 và kết thúc khi i<n và mỗi lần i tăng lên một để nhập dữ liệu cho từng phần tử từ a[0] đến a[n-1], trong vòng for thì nhập vào dữ liệu của a[i].

Bước 5: Ta khởi tạo hàm void Xuat(int a[], int n) dùng để hiển thị dữ liệu từ mảng ra màn hình. Trong hàm ta sử dụng vòng for bắt đầu từ int i =0 và kết thúc khi i<n và mỗi lần i tăng lên một để hiển thị dữ liệu của từng phần tử từ a[0] đến a[n-1] ra màn hình, trong vòng for ta dùng if với điều kiện KiemTraSoNguyenTo(a[i]) == true (neu a[i] là số nguyên tố) nếu thỏa mãn thì in a[i] ra màn hình.

Bước 6: Trong hàm main ta gọi hàm Nhap(a,n) và Xuat(a,n) rồi chạy chương trình.

Chương trình giải bài tập tìm các số nguyên tố có trong mảng một chiều số nguyên bằng ngôn ngữ C như sau:

#include<stdio.h>
#include<math.h>
bool KiemTraNguyenTo(int n)
{
    if(n < 2)//neu nho lon 2 thi khong phai so nguyen to
    {
        return false;
    }
    int count = 0;//dung de dem so uoc cua n
    for(int i = 2; i <= sqrt(n); i++)
    {
        if(n % i == 0)//neu n chia het cho i thi count tang len 1
        {
            count++;
        }
    }
    if(count == 0)//neu khong co uoc trong doan tu [2, sqrt(n)] thi n la so nguyen to
    {
        return true;
    }else//nguoc lai n không phai la so nguyen to
    {
        return false;
    }
}
void Nhap(int a[], int n)//ham nhap mang
{
    for(int i=0; i<n ; i++)//vong lap for duyet phan tu trong mang tu 0 den n-1
    {
        //nhap du lieu vao mang
        printf("Nhap a[%d] = ",i);
        scanf("%d", &a[i]);
    }
}
void Xuat(int a[], int n)//ham xuat mang
{
    for(int i=0; i<n ; i++)//vong lap for duyet phan tu trong mang 0 den n-1
    {
        if(KiemTraNguyenTo(a[i])==true)//neu a[i] la so nguyen to
        {
            //hien thi cac phan tu trong mang
            printf("%d \t", a[i]);
        }
        
    }
}
int main()
{
    int a[100];// khai bao mang so nguyen co 100 o nho
    int n;//khai bao so nguyen n la so phan tu cua mang
    //Nhap du lieu cua n
    do{
        printf("Nhap so phan tu cua mang:");
        scanf("%d", &n);
        if(n<1 || n>100)
        {
            printf("Nhap lai:");
        }
    }while(n<1 || n>100);//dieu kien neu n<1 hoac n>100 yeu cau nhap lai
    Nhap(a, n);//goi ham nhap mang
    printf("\nCac so nguyen to co trong mang la:\n");
    Xuat(a,n);// goi ham xuat mang
}

Ví dụ tôi nhập mảng có 5 phần tử: 6, 4, 2, 1.

Kết quả:

Nhap so phan tu cua mang:5
Nhap a[0] = 6
Nhap a[1] = 4
Nhap a[2] = 2
Nhap a[3] = 3
Nhap a[4] = 1Cac so nguyen to co trong mang la:
2 3

3. Tổng kết

Sau khi làm bài tập này các bạn cần phải hiểu và nắm được những kiến thức sau:

  • Cách nhập xuất cơ bản trong ngôn ngữ lập trình C.
  • Cách sử dụng hàm trong ngôn ngữ lập trình C.
  • Cách sử dụng mảng một chiều trong ngôn ngữ lập trình C.
  • Cách sử dụng hàm sqrt() trong ngôn ngữ lập trình C.
  • Cách nhận biết một số nguyên tố.
  • Cách sử dụng vòng lặp for để duyệt các phần tử trong mảng.