Thuật toán kiểm tra số chính phương C++

Giới thiệu

Thuật toán kiểm tra số chính phương là một trong những thuật toán cơ bản quan trọng khi bắt đầu học lập trình. Nó giúp bạn rèn luyện tính tư duy logic và hiểu rõ về khái niệm số chính phương. Bài viết này sẽ giới thiệu thuật toán kiểm tra số chính phương và cung cấp ví dụ thực tế viết bằng ngôn ngữ C++.

Số chính phương là gì?

Theo như chúng ta đã học ở trường, số chính phương là số tự nhiên có căn bậc hai là một số tự nhiên. Đơn giản hơn, số chính phương bằng bình phương của một số tự nhiên.

Ví dụ, số 4 là số chính phương vì 2^2 = 4. Tập hợp các số chính phương gồm 4, 9, 16, 25, 36, …

Thuật toán kiểm tra số chính phương

Trong phần này, chúng ta sẽ giới thiệu hai cách để kiểm tra số chính phương: sử dụng vòng lặp và hàm sqrt() trong thư viện math.h.

Thuật toán kiểm tra số chính phương bằng vòng lặp

Giải thích thuật toán:

  • Lặp i từ 0 đến khi i*i > n.
  • Nếu i*i = n, thì n là số chính phương và kết thúc chương trình.
  • Nếu i*i > n, thì n không phải là số chính phương.

*Lưu ý: Trong vòng lặp cần có bước nhảy ++i để vòng lặp hoạt động đúng.

Thuật toán kiểm tra số chính phương bằng hàm sqrt()

Giải thích thuật toán:

  • Sử dụng hàm sqrt() trong thư viện math.h để tính căn bậc hai của số n.
  • Nếu sqrt(n) * sqrt(n) = n, thì n là số chính phương.

Ví dụ thực tế

Trong phần ví dụ này, chúng ta sẽ tạo một mảng với số lượng phần tử do người dùng nhập và kiểm tra xem các phần tử trong mảng có phải là số chính phương hay không.

Gợi ý:

  • Sử dụng hàm SoCP() để kiểm tra số chính phương.
  • Tạo một mảng chứa các phần tử cần kiểm tra.
  • Sử dụng vòng lặp for để lặp qua từng phần tử trong mảng và in ra các số chính phương có trong mảng.

Code Mẫu:

#include 
#include 
using namespace std;

bool SoCP(int n) {
    for (int i = 0; i * i <= n; ++i) {
        if (i * i == n) {
            return true;
        }
    }
    return false;
}

int main() {
    int n;
    cout << "Nhap so luong phan tu: ";
    cin >> n;

    int arr[n];
    cout << "Nhap cac phan tu: ";
    for (int i = 0; i < n; ++i) {
        cin >> arr[i];
    }

    cout << "Cac so chinh phuong trong mang: ";
    for (int i = 0; i < n; ++i) {
        if (SoCP(arr[i])) {
            cout << arr[i] << " ";
        }
    }

    return 0;
}

Kết quả:
Như vậy là chúng ta đã hoàn thành chương trình kiểm tra số chính phương trong mảng và kết thúc hướng dẫn thuật toán kiểm tra số chính phương. Chúc các bạn thực hiện thành công!

FEATURED TOPIC