Bài tập lập trình C++ : Hàm Kiểm tra số chính phương, thuật toán kiểm tra số chính phương
Viết chương trình nhập vào 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ố khi lấy căn bặc 2 có kết quả là nguyên). viết chương trình kiểm tra số chính phương trong c++
Số chính phương là 1 trong những bài tập gặp rất nhiều trong chương trình học lập trình cơ bản. Bài toán này cũng là 1 trong những bài toán có rất nhiều cách giải khác nhau. Như kiểu chạy i tới 1/n và bình thường lên khi nào =n thì n là số chính phương.. Hoặc chạy i = 1 kiểm tra tiếp nếu i bình phương < n thì tiếp tục + 1 lên. Các bạn có thể tham khảo một số cách dưới đây
Kiểm tra số chính phương bằng cách ép kiểu số nguyên.
Hàm kiểm tra số chính phương đơn giản khác:
Tiếp tục 1 cách sử dụng hàm khai căn
Nếu có cách nào tối ưu hơn các bạn cùng thảo luận nhé, riêng cách cho i chạy thì mình không post vì nó khá thủ công và không tối ưu cho xử lý tính toán
Viết chương trình nhập vào 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ố khi lấy căn bặc 2 có kết quả là nguyên). viết chương trình kiểm tra số chính phương trong c++
Số chính phương là 1 trong những bài tập gặp rất nhiều trong chương trình học lập trình cơ bản. Bài toán này cũng là 1 trong những bài toán có rất nhiều cách giải khác nhau. Như kiểu chạy i tới 1/n và bình thường lên khi nào =n thì n là số chính phương.. Hoặc chạy i = 1 kiểm tra tiếp nếu i bình phương < n thì tiếp tục + 1 lên. Các bạn có thể tham khảo một số cách dưới đây
Kiểm tra số chính phương bằng cách ép kiểu số nguyên.
Mã:
#include<iostream.h>
int main()
{
int n,i;
cout<<"nhap so nguyen n"<<endl;
cin>>n;
i=sqrt(n);
if(n==i*i)
cout<<"la so chinh phuong"<<"\n";
else
cout<<"khong phai so chinh phuong";
}
Hàm kiểm tra số chính phương đơn giản khác:
Mã:
int kiemTraSoChinhPhuong(int n)
{
int i=0;
while(i*i<n) ++i;
return (i*i==n);
}
Tiếp tục 1 cách sử dụng hàm khai căn
Mã:
#include <iostream>
#include <math.h>
int main()
{
int n;
cout<<"Nhap n:";
cin>>n;
if(sqrt(n)*sqrt(n)==n)
cout<<"Day la so chinh phuong."<<endl;
else
cout<<"Khong phai la so chinh phuong"<<endl;
}
Nếu có cách nào tối ưu hơn các bạn cùng thảo luận nhé, riêng cách cho i chạy thì mình không post vì nó khá thủ công và không tối ưu cho xử lý tính toán