LATEST

In các số nguyên tố trong mảng C / C++

Trong bài viết này, codehow sẽ hướng dẫn các bạn thực hiện chương trình in số nguyên tố trong mảng C / C++. Đây là dạng bài tập kết hợp giữa việc sử dụng hàm và mảng trong C / C++.

Chương trình sẽ thực hiện duyệt từng phần tử trong mảng, kiểm tra phần tử đó có phải số nguyên tố hay không. Nếu phải thì in ra màn hình, ngược lại thì bỏ qua và duyệt phần tử tiếp theo.

Ví dụ: mình có mảng Number = {2, 4, 7, 11}, đầu tiên chương trình kiểm tra số 2, đây là số nguyên tố nên thực hiện in ra màn hình. Tiếp đến số 4, không phải là số nguyên tố thì bỏ qua, tiếp tục như vậy cho đến hết mảng.

Kết quả: Số 2, 7, 11 là các số nguyên tố có trong mảng Number.

Vậy làm thế nào để thực hiện chương trình in số nguyên tố trong mảng C / C++, hãy bắt đầu cùng mình ngay bây giờ thôi nhé.

Chương trình in số nguyên tố trong mảng C / C++

Để in số nguyên tố trong mảng C / C++, ta cần tạo hàm KiemTraSoNguyenTo() với tham số là một số nguyên n. Hàm này được dùng để kiểm tra số được truyền vào có phải số nguyên tố hay không.

bool KiemTraNguyenTo(int n)
{
  //nếu n < 2 thì không phải là số nguyên tố
    if (n < 2)
    {
        return false;
    }
    //nếu n > 2 thì ta tiếp tục xét
    else if (n > 2)
    {
      //nếu n % 2 == 0 thì không phải là số nguyên tố
        if (n % 2 == 0) 
        {
            return false;
        }
        //ta sử dụng vòng lặp for lặp từ 3 đến căn bậc hai của n, với bước nhảy += 2
        for (int i = 3; i <= sqrt((float)n); i += 2) 
        {
          //nếu n chia hết cho i thì không phải là số nguyên tố
            if (n % i == 0)
            {
                return false;
            }
        }
    }
    //còn lại là số nguyên tố
    return true;
}

Tiếp đến ta tạo hàm InNguyenTo() hàm này có chức năng in các số nguyên tố trong mảng ra màn hình.

/* hàm đếm số nguyên tố trong mảng */
void innguyento(int a[], int n)
{
    //ta sử dụng vòng lặp for để duyệt từng phần tử trong mảng
    //cứ mỗi vòng lặp ta gọi hàm KiemTraNguyenTo() để kiểm tra phần tử đó
    printf("\nCác số nguyên tố trong mảng là: ");
    for(int i = 0; i < n; i++)
    {
        if(KiemTraNguyenTo(a[i]) == true && a[i] < 100)
        {
            printf("%d ", a[i]);
        }
    }
}

Cuối cùng ta yêu cầu người dùng nhập vào số lượng phần tử và giá trị các phần tử trong mảng. Sau đó gọi hàm InNguyenTo() và truyền tham số vào hàm.

int main()
{
    int i, count, sum = 0;
    printf("Nhập số lương phần tử trong mảng:");
    scanf("%d", &count);
    int number[count];

    printf("\nNhập giá trị cho từng phần tử trong mảng:\n");
    for (i = 0; i < count; ++i)
      scanf("%d", &number[i]);

    innguyento(number, count);
    
    printf("\n-----------------------------------\n");
    printf("Chương trình này được đăng tại codehow.net");
}

Dưới đây là hai chương trình mình đã viết bằng hai ngôn ngữ khác nhau C và C++, các bạn có thể tham khảo nhé.

Chương trình C:

#include<stdio.h>
#include<math.h>
#include<stdbool.h>
bool KiemTraNguyenTo(int n)
{
  //nếu n < 2 thì không phải là số nguyên tố
    if (n < 2)
    {
        return false;
    }
    //nếu n > 2 thì ta tiếp tục xét
    else if (n > 2)
    {
      //nếu n % 2 == 0 thì không phải là số nguyên tố
        if (n % 2 == 0) 
        {
            return false;
        }
        //ta sử dụng vòng lặp for lặp từ 3 đến căn bậc hai của n, với bước nhảy += 2
        for (int i = 3; i <= sqrt((float)n); i += 2) 
        {
          //nếu n chia hết cho i thì không phải là số nguyên tố
            if (n % i == 0)
            {
                return false;
            }
        }
    }
    //còn lại là số nguyên tố
    return true;
}
/* hàm đếm số nguyên tố trong mảng */
void innguyento(int a[], int n)
{
    //ta sử dụng vòng lặp for để duyệt từng phần tử trong mảng
    //cứ mỗi vòng lặp ta gọi hàm KiemTraNguyenTo() để kiểm tra phần tử đó
    printf("\nCác số nguyên tố trong mảng là: ");
    for(int i = 0; i < n; i++)
    {
        if(KiemTraNguyenTo(a[i]) == true && a[i] < 100)
        {
            printf("%d ", a[i]);
        }
    }
}
int main()
{
    int i, count, sum = 0;
    printf("Nhập số lương phần tử trong mảng:");
    scanf("%d", &count);
    int number[count];

    printf("\nNhập giá trị cho từng phần tử trong mảng:\n");
    for (i = 0; i < count; ++i)
      scanf("%d", &number[i]);

    innguyento(number, count);
    
    printf("\n-----------------------------------\n");
    printf("Chương trình này được đăng tại codehow.net");
}

Kết quả:

bai25 02 PNG

Chương trình C++:

#include <iostream>
#include <math.h>
using namespace std;

bool KiemTraNguyenTo(int n) {
  // nếu n < 2 thì không phải là số nguyên tố
  if (n < 2) {
    return false;
  }
  // nếu n > 2 thì ta tiếp tục xét
  else if (n > 2) {
    // nếu n % 2 == 0 thì không phải là số nguyên tố
    if (n % 2 == 0) {
      return false;
    }
    // ta sử dụng vòng lặp for lặp từ 3 đến căn bậc hai của n, với bước nhảy +=
    // 2
    for (int i = 3; i <= sqrt((float)n); i += 2) {
      // nếu n chia hết cho i thì không phải là số nguyên tố
      if (n % i == 0) {
        return false;
      }
    }
  }
  // còn lại là số nguyên tố
  return true;
}
/* hàm đếm số nguyên tố trong mảng */
void innguyento(int a[], int n) {
  // ta sử dụng vòng lặp for để duyệt từng phần tử trong mảng
  // cứ mỗi vòng lặp ta gọi hàm KiemTraNguyenTo() để kiểm tra phần tử đó
  cout << "\nCác số nguyên tố trong mảng là: ";
  for (int i = 0; i < n; i++) {
    if (KiemTraNguyenTo(a[i]) == true && a[i] < 100) {
      cout << a[i] << " ";
    }
  }
}
int main() {
  int i, count, sum = 0;
  cout << "Nhập số lương phần tử trong mảng:";
  cin >> count;
  int number[count];

  cout << "\nNhập giá trị cho từng phần tử trong mảng:\n";
  for (i = 0; i < count; ++i)
    cin >> number[i];

  innguyento(number, count);

  cout << "\n-----------------------------------\n";
  cout << "Chương trình này được đăng tại codehow.net";
}

Kết quả:

bai25 01 PNG

Như vậy là chúng ta đã cùng nhau thực hiện xong chương trình in số nguyên tố trong mảng C / C++. Các bạn có thể luyện tập nhiều dạng bài tập hơn tại serries bài tập C / C++ của codehow nhé. Cảm ơn các bạn rất nhiều !!!

Cùng chuyên mục:

Xóa node khỏi cây nhị phân tìm kiếm

Xóa node khỏi cây nhị phân tìm kiếm

Tìm node Max và Min trong cây nhị phân tìm kiếm

Tìm node Max và Min trong cây nhị phân tìm kiếm

Xuất node con và node lá trong cây nhị phân tìm kiếm

Xuất node con và node lá trong cây nhị phân tìm kiếm

Tìm kiếm trên cây nhị phân tìm kiếm

Tìm kiếm trên cây nhị phân tìm kiếm

Duyệt cây nhị phân tìm kiếm

Duyệt cây nhị phân tìm kiếm

Thêm node vào cây nhị phân tìm kiếm

Thêm node vào cây nhị phân tìm kiếm

Cây nhị phân (Binary tree) là gì? Cơ chế hoạt động của nó

Cây nhị phân (Binary tree) là gì? Cơ chế hoạt động của nó

Cách gộp hai danh sách liên kết đôi

Cách gộp hai danh sách liên kết đôi

Tìm kiếm phần tử trong DSLK đôi

Tìm kiếm phần tử trong DSLK đôi

Xóa node trong DSLK đôi

Xóa node trong DSLK đôi

Chèn node (Insert node) vào DSLK đôi

Chèn node (Insert node) vào DSLK đôi

Duyệt danh sách liên kết đôi

Duyệt danh sách liên kết đôi

Tạo node mới trong DSLK đôi

Tạo node mới trong DSLK đôi

DSLK đôi là gì? Cấu trúc dữ liệu của DSLK đôi

DSLK đôi là gì? Cấu trúc dữ liệu của DSLK đôi

Quản lý sinh viên bằng DSLK đơn

Quản lý sinh viên bằng DSLK đơn

Tìm kiếm và sắp xếp trong DSLK đơn

Tìm kiếm và sắp xếp trong DSLK đơn

Xóa node (Delete node) trong DSLK đơn

Xóa node (Delete node) trong DSLK đơn

Chèn node (Insert node) vào DSLK đơn

Chèn node (Insert node) vào DSLK đơn

Tạo node mới trong DSLK đơn

Tạo node mới trong DSLK đơn

Cấu trúc dữ liệu của DSLK đơn

Cấu trúc dữ liệu của DSLK đơn