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.

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