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++.
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ếun
là số chính phương, biếndem
được tăng lên 1 và nếun
là số chẵn, tổngsum
vàsoluongChan
đượ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ệnmath
. Nếusqrt(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ộngTBC
của các số chính phương chẵn. Nếudem
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
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.