Bài tập kiểm tra một số chính phương trong c++ năm 2024

Điều hướng bài viết

Bài tập kiểm tra một số chính phương trong c++ năm 2024

include

include

include

int main() { int scp,a; printf("Nhap so can kiem tra: "); scanf("%d",&scp); a=sqrt((float)scp); if(a*a==scp) printf("So %d la so chinh phuong :)",scp); else printf("So %d khong la so chinh phuong :(",scp); getch(); }

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 hai là một số tự nhiên, hay nói cách khác, số chính phương bằng bình phương của một số tự nhiên.

Khái niệm số chính phương trong C cũng giống như trên. Chúng ta coi một số là số chính phương trong C nếu như nó bằng bình phương của một số tự nhiên. Đây là chìa khóa thứ nhất giúp chúng ta có thể tìm được số chính phương trong C.

Bài tập kiểm tra một số chính phương trong c++ năm 2024

Nói cách khác, căn bậc 2 của một số chính phương chính là một số tự nhiên. Đây là chìa khóa thứ 2 giúp chúng ta có thể tìm được số chính phương trong C.

Kiểm tra số chính phương trong C bằng lũy thừa

Cách đầu tiên để kiểm tra số chính phương trong C là sử dụng khái niệm số chính phương bằng bình phương của một số tự nhiên.

Điều đó có nghĩa, với một số bất kỳ, nếu chúng ta có thể tìm được một số tự nhiên mà bình phương của nó bằng với số đã cho, thì số đó chính là số chính phương.

Để tìm lũy thừa trong C, chúng ta cần sử dụng tới hàm pow() trong header file . Lưu ý là chúng ta cần thêm header file này vào đầu chương trình để sử dụng được hàm này.

Và chúng ta tạo hàm kiểm tra số chính phương trong C với cách này như sau:

include

int find_square_number(int n){

  
  
int flag = 0;  
  
int i = 0;  
while(i <= n){  
    if( pow( i, 2) == n ) {     
        flag = 1;  
        break;   
    }  
    i++;  
}  
return flag;  
}

Chúng ta có thể gọi hàm này và sử dụng trong chương trình nhập n kiểm tra n có phải số chính phương không trong C như sau:

include

include

int find_square_number(int n){

  
  
int flag = 0;  
  
int i = 0;  
while(i <= n){  
    if( pow( i, 2) == n ) {     
        flag = 1;  
        break;   
    }  
    i++;  
}  
return flag;  
}

int main(void){

int n;  
printf(">> nhap mot so tu nhien: ");  
scanf("%d",&n);  
int check = find_square_number(n);  
if( check == 1 ) printf("%d la so chinh phuong\n", n);  
else printf("%d khong phai la so chinh phuong\n", n);  
return 0;  
}

Lưu ý là số nhập từ bàn phím phải là một số tự nhiên.

Màn hình nhập liệu và kết quả kiểm tra số chính phương trong C sẽ như sau:

nhap mot so tu nhien: 4

4 la so chinh phuong

nhap mot so tu nhien: 5

5 khong phai la so chinh phuong

nhap mot so tu nhien: 16 16 la so chinh phuong

nhap mot so tu nhien: 25 25 la so chinh phuong

Kiểm tra số chính phương trong C bằng căn bậc 2

Cách thứ 2 để kiểm tra số chính phương trong C là sử dụng tính chất căn bậc 2 của một số chính phương chính là một số tự nhiên.

Điều đó có nghĩa, với một số bất kỳ, nếu căn bậc 2 của nó là một số tự nhiên, thì số đó chính là số chính phương.

Để tìm căn bậc 2 trong C, chúng ta cần sử dụng tới hàm sqrt() trong header file . Lưu ý là chúng ta cần thêm header file này vào đầu chương trình để sử dụng được hàm này.

Để kiểm tra kết quả căn bậc 2 có phải là số tự nhiên không, chúng ta sẽ sử dụng hàm tự tạo mà Kiyoshi đã giới thiệu trong bài sau:

  • Xem thêm: Kiểm tra số nguyên trong C

Và chúng ta tạo hàm kiểm tra số chính phương trong C với cách này như sau:

include

include

int check_real_integer_number(float n){

  
int flag = 1;  
if (ceil(n) != floor(n)) flag = 0;  
return flag;  
}

int find_square_number(int n){

  
int flag = 0;  
  
if (check_real_integer_number (sqrtf(n))) flag = 1;  
return flag;  
}

Chúng ta có thể gọi hàm này và sử dụng trong chương trình nhập n kiểm tra n có phải số chính phương không trong C như sau:

include

include

int check_real_integer_number(float n){

  
int flag = 1;  
if (ceil(n) != floor(n)) flag = 0;  
return flag;  
}

int find_square_number(int n){

  
int flag = 0;  
  
if (check_real_integer_number (sqrtf(n))) flag = 1;  
return flag;  
} int main(void){
int n;  
printf(">> nhap mot so tu nhien: ");  
scanf("%d",&n);  
int check = find_square_number(n);  
if( check == 1 ) printf("%d la so chinh phuong\n", n);  
else printf("%d khong phai la so chinh phuong\n", n);  
return 0;  
}

Lưu ý là số nhập từ bàn phím phải là một số tự nhiên.

Màn hình nhập liệu và kết quả kiểm tra số chính phương trong C sẽ như sau:

nhap mot so tu nhien: 4

4 la so chinh phuong

nhap mot so tu nhien: 5

5 khong phai la so chinh phuong

nhap mot so tu nhien: 16 16 la so chinh phuong

nhap mot so tu nhien: 25 25 la so chinh phuong

Liệt kê tất cả các số chính phương nhỏ hơn n

Sử dụng một trong 2 phương pháp ở trên, chúng ta có thể liệt kê tất cả các số chính phương nhỏ hơn n bằng C.

Và dưới đây là ví dụ về chương trình liệt kê tất cả các số chính phương nhỏ hơn n trong C:

include

include

int find_square_number(int n){

  
  
int flag = 0;  
  
int i = 0;  
while(i <= n){  
    if( pow( i, 2) == n ) {     
        flag = 1;  
        break;   
    }  
    i++;  
}  
return flag;  
}

int main(void){

int n;  
printf(">> nhap mot so n: ");  
scanf("%d",&n);  
int i = 0, check;  
while ( i < n){  
    check = find_square_number(i);  
  
    if( check == 1 ) printf("%d ", i);  
      
    ++i;  
}  
return 0;  
}

Kết quả:

nhap mot so n: 10

0 1 4 9

nhap mot so n: 30 0 1 4 9 16 25

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn cách kiểm tra số chính phương trong C cũng như cách liệt kê tất cả các số chính phương nhỏ hơn n bằng C rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.