Bạn đã bao giờ muốn kiểm tra xem một số có phải là số chính phương hay không? Hay tìm các số chính phương trong một mảng? Bài viết này sẽ giúp bạn viết hàm kiểm tra số chính phương và tìm số chính phương trong mảng sử dụng ngôn ngữ C/C++.
Mục lục
1. Bài toán kiểm tra số chính phương
Bài toán 1: Hãy viết chương trình nhập vào một số nguyên dương n. Kiểm tra xem n có phải là số chính phương hay không? (số chính phương là số có căn bậc 2 là một số nguyên). Hãy viết chương trình kiểm tra số chính phương sử dụng ngôn ngữ lập trình C/C++
Bài toán 2: Viết chương trình nhập vào một mảng số nguyên có n phần tử. Hãy tìm và in ra màn hình các số chính phương trong mảng. Hãy viết chương trình tìm các số chính phương trong mảng sử dụng ngôn ngữ lập trình C/C++
Kiểm tra số chính phương là một trong những bài tập lập trình C/C++ phổ biến trong các môn học lập trình cơ bản. Để kiểm tra một số có là số chính phương hay không, chúng ta có một vài cách để giải quyết:
- Lặp i từ 0 đến khi ii > n. Nếu ii = n, tức n là số chính phương, kết thúc chương trình. Nếu i*i > n, suy ra n không phải số chính phương.
- Kiểm tra kết quả của căn bậc 2 của n có phải số nguyên không. Đây là cách tối ưu hơn.
2. Code kiểm tra số chính phương C/C++
Nếu ta sử dụng vòng lặp (cách 1) như trên, chúng ta có thể code như dưới đây:
Code bằng ngôn ngữ C:
#include <stdio.h>
int main(){
int n;
printf("Nhập n = ");
scanf("%d", &n);
int i = 0;
while(i*i <= n){
if(i*i == n){
printf("%d là số chính phương! n", n);
return 0;
}
++i;
}
printf("%d không phải số chính phương! n", n);
}
Code bằng ngôn ngữ C++:
#include <iostream>
using namespace std;
int main(){
int n;
cout << "Nhập n = ";
cin >> n;
int i = 0;
while(i*i <= n){
if(i*i == n){
cout << n << " là số chính phương! n";
return 0;
}
++i;
}
cout << n << " không phải số chính phương! n";
}
Output:
Bài viết liên quan:
Nhập n = 4
4 là số chính phương!
Với cách kiểm tra kết quả của phép khai căn của n có là số nguyên không, chúng ta có thể sử dụng hàm sqrt trong thư viện math.h. Đồng thời, sử dụng kỹ thuật ép kiểu để thực hiện.
Code kiểm tra số chính phương viết bằng C:
#include <stdio.h>
#include <math.h>
int main(){
int n;
printf("Nhập n = ");
scanf("%d", &n);
int sqr = sqrt(n);
if(sqr*sqr == n){
printf("%d là số chính phương! n", n);
}else{
printf("%d không phải số chính phương! n", n);
}
}
Code kiểm tra số chính phương viết bằng C++:
#include <iostream>
#include <math.h>
using namespace std;
int main(){
int n;
cout << "Nhập n = ";
cin >> n;
int sqr = sqrt(n);
if(sqr*sqr == n){
cout << n << " là số chính phương! n";
}else{
cout << n << " không phải số chính phương! n";
}
}
Output:
Nhập n = 8
8 không phải số chính phương!
3. Tìm các số chính phương có trong mảng
Để in ra các số chính phương có trong mảng, bạn cần kiểm tra lần lượt từng phần tử có phải số chính phương hay không. Nếu là số chính phương thì in ra thôi.
Sau đây là code tìm và in ra các số chính phương có trong mảng một chiều. Bạn có thể tham khảo:
#include <iostream>
#include <math.h>
using namespace std;
bool sap(int n){
int sqr = sqrt(n);
return (sqr*sqr == n);
}
int main(){
int n;
do{
cout<<"Nhập n = ";
cin>>n;
}while(n <= 0);
int a[n];
for(int i = 0;i < n;i++)
cin>>a[i];
cout<<"Các số chính phương: n";
for(int i = 0;i < n; i++){
if(sap(a[i])){
cout<<a[i]<<" ";
// Nếu muốn in chỉ số của các số chính phương, bỏ comment dòng dưới đây
// cout<<i<<"n";
}
}
}
Ouput:
Nhập n = 5
1 2 4 9 8
Các số chính phương: 1 4 9
4. Kết luận
Như vậy, chúng ta đã giúp bạn tìm ra lời giải cho bài toán kiểm tra số chính phương và tìm số chính phương trong mảng. Hi vọng bài viết đem lại những chia sẻ hữu ích cho bạn.