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ả:
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ả:
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 !!!