[C++] Kiểm tra số chính phương – Thuật toán & CODE mẫu

Số chính phương là một khái niệm quan trọng trong toán học, với nhiều ứng dụng trong lập trình và giải quyết bài toán thực tế. Trong bài viết này, chúng ta sẽ tìm hiểu cách nhận biết số chính phương và thuật toán kiểm tra số chính phương c++ đơn giản, dễ hiểu nhất. Bắt đầu thôi!

Bài trước: Bài 14: viết chương trình tính tổng theo công thức S(n) = 1+1/3+1/5+1/7…+1/(2*n-1) trong c++.

kiểm tra số hoàn hảo c++

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

1.1 Định nghĩa

Số chính phương (square number) là một số tự nhiên bằng bình phương của một số nguyên.

Hay hiểu đơn giản, số chính phương là một số tự nhiên có căn bậc hai cũng là một số tự nhiên. Số chính phương về bản chất là bình phương của một số tự nhiên nào đó.

Ví dụ:

  • Các số chính phương: 1 , 4 , 9 , 16 , 25 , 36 , …
  • Vì căn bậc hai của chúng: 1 , 2 , 3 , 4 , 5 , 6 đều là số nguyên.

1.2 Một số tính chất của số chính phương

  • Không âm: Tất cả các số chính phương đều là số không âm, vì bình phương của bất kỳ số nào cũng không âm.
  • Tổng hai số chính phương: Tổng của hai số chính phương có thể là một số chính phương.
  • Số lẻ liên tiếp: Số chính phương cuối cùng trong một dãy số chính phương liên tiếp luôn là số lẻ.

2. Bài toán kiểm tra số chính phương

Bài 15: Số chính phương hay còn gọi là số hình vuông, là số tự nhiên có căn bậc 2 là một số nguyên. Hãy viết chương trình nhập vào các số nguyên đến khi gặp 0 thì dừng.

Đưa ra các kết quả sau: số lượng số chính phương đã nhập (nếu không có số nào thì trả về “không có số chính phương nào được nhập”), trung bình cộng các số chính phương chẵn (nếu nó là một số chẵn).

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

3.1. Viết hàm kiểm tra và tính tổng số chính phương

  • Vòng lặp do-while được sử dụng để nhập và kiểm tra các số nguyên từ người dùng cho đến khi nhập giá trị 0.
  • Trong vòng lặp này, số n được kiểm tra xem có phải là số chính phương hay không. Nếu n là số chính phương, biến dem được tăng lên 1 và nếu n là số chẵn, tổng sumsoluongChan được cập nhật. Vòng lặp sẽ tiếp tục cho đến khi người dùng nhập giá trị 0.
  • Sử dụng hàm tính căn bậc sqrt() trong thư viện math. Nếu sqrt(n)*sqrt(n) = n thì tức là n là số chính phương. Nếu như n < 1 thì n sẽ không phải là số chính phương.

Kiểm tra số chính phương c++:

if (n > 0 && n == sqrt(n) * sqrt(n)) {
  cout << "n la so chinh phuong";
} else {
  cout << "n khong phai la so chinh phuong";
}

3.2 in ra số chính phương từ mảng c++

  • Sau khi kết thúc vòng lặp, chương trình sẽ kiểm tra giá trị của biến dem để xác định có số chính phương nào hay không.
  • Nếu dem khác 0, chương trình sẽ in ra số lượng số chính phương và tính trung bình cộng TBC của các số chính phương chẵn. Nếu dem bằng 0, chương trình sẽ in ra thông báo không có số chính phương nào.

4. Code kiểm tra số chính phương c

Dưới đây là đoạn mã hoàn chỉnh:

#include<bits/stdc++.h>

using namespace std;
int main() {
  int i, n, sum = 0, dem = 0, soluongChan = 0;
  float TBC;
  do {
    cout << "nhap so nguyen n: ";
    cin >> n;
    if (n > 0 && n == sqrt(n) * sqrt(n)) {
      dem++;
      if (n % 2 == 0) {
        sum = sum + n;
        soluongChan++;
      }
    }
  } while (n != 0);
  if (dem != 0) {
    cout << "Co " << dem << " so chinh phuong" << endl;
    TBC = sum / soluongChan;
    cout << "Trung binh cong cac so chinh phuong chan la: " << TBC;
  } else cout << "khong co so chinh phuong nao";
}

5. Kết quả chương trình

Kết quả 1

Kết quả 2

Trên đây là một ví dụ về việc sử dụng ngôn ngữ lập trình C++ để đếm số chính phương và tính trung bình cộng của các số chính phương chẵn. Bằng cách sử dụng vòng lặp và kiểm tra điều kiện, chương trình cho phép người dùng nhập các số nguyên và xác định xem chúng có phải là số chính phương hay không.

Chúng ta đã tìm hiểu cách sử dụng hàm sqrt() để kiểm tra tính chính phương của một số. Chương trình cũng đếm số lượng số chính phương và tính trung bình cộng của các số chính phương chẵn.

Hy vọng rằng ví dụ trên đã giúp bạn hiểu thêm về số chính phương và cách áp dụng nó trong ngôn ngữ lập trình C++. Cảm ơn bạn đã theo dõi trên ttnguyen.net và chúc bạn thành công!

Tải full bài tập thực hành lập trình C/C++ có lời giải

Bài tiếp theo: Bài 17 (TH-CSLT-01). Hãy viết chương trình nhập vào một dãy số đến khi gặp số 0 thì dừng, sau đó tách mảng c++ số chẵn và số lẻ ra 02 mảng khác nhau. Tính trung bình cộng các số chẵn dương và trung bình cộng các số lẻ âm.

nhập vào tháng, năm cho biết tháng đó có bao nhiêu ngày c++

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em