main frame
1.Số Chính Phương
Bạn đang xem: [C]. Số Chính Phương
Số chính phương là số bình phương của một số nguyên, ví dụ như các số 0, 1, 4, 25, 49, 100..
Phương pháp :
- Tính căn bậc 2 của N và lưu căn vào số nguyên với mục đích loại bỏ phần thập phân của căn
- So sánh tích của căn với chính nó với số N, nếu bằng nhau thì N là số chính phương
Giải thích : Khi N là số chính phương thì tính căn bậc 2 của N và lưu vào số nguyên sẽ không làm thay đổi giá trị của biến căn vì phần thập phần bằng 0, ngược lại N không phải là số chính phương thì khi tính căn bậc 2 nhưng lưu vào số nguyên sẽ làm mất phần thập phân có ý nghĩa dẫn đến thay đổi giá trị của biến căn N và vì thế khi ta nhân ngược lại căn với căn sẽ không ra được N.
Ví dụ :
N = 20, can = √N = 4.472 = 4, can * can = 16 != 20 nên 20 không phải là số chính phương
N = 25, can = √N = 5.000 = 5, can * can = 25 == 25 nên 25 là số chính phương
Code :
#include “stdio.h” #include “math.h” int cp(int n){ int can = sqrt(n); if(can * can == n){ return 1; // dung } else{ return 0; // sai } } int main(){ if(cp(20) == 1){ printf(“YESn”); } else{ printf(“NOn”); } if(cp(25) == 1) printf(“YESn”); else printf(“NOn”); return 0; }
Output :
NO YES
Xem thêm : Bác sĩ sản khoa giải đáp tất tần tật về mũi tiêm gây tê ngoài màng cứng
2. Bài Tập Số Chính Phương
Bài 1. In ra các số chính phương từ 1 tới N
Đếm các số chính phương từ 1 tới N các bạn làm tương tự
Xem thêm : 100+ tên con trai họ Hoàng hay và ý nghĩa nhất năm 2022
Code 1. Thuật toán ngây thơ
#include “stdio.h” #include “math.h” int cp(int n){ int can = sqrt(n); if(can * can == n){ return 1; } else{ return 0; } } int main(){ int n = 30; for(int i = 1; i
Output :
1 4 9 16 25
Code 2 : Thuật toán tối ưu
Phân tích : Để liệt kê các số chính phương từ 1 tới n ta gọi số chính phương đó có dạng i2 trong đó i là một số nguyên
Từ đó ta có bất phương trình 1 ≤ i2 ≤ n => 1 ≤ i ≤ √n, vậy để in ra các số chính phương từ 1 tới n bạn chỉ cần duyệt các số i từ 1 tới √n và in ra bình phương của i là được.
#include “stdio.h” #include “math.h” int main(){ int n = 30; for(int i = 1; i
Bài 2. Liệt kê (đếm) các số chính phương từ a tới b.
Xem thêm : 100+ tên con trai họ Hoàng hay và ý nghĩa nhất năm 2022
Code 1. Thuật toán ngây thơ
#include “stdio.h” #include “math.h” int cp(int n){ int can = sqrt(n); if(can * can == n){ return 1; } else{ return 0; } } int main(){ int a = 10, b = 50; for(int i = a; i
Output :
16 25 36 49
Code 2 : Thuật toán tối ưu
Phân tích : Để liệt kê các số chính phương từ a tới b ta gọi số chính phương đó có dạng i2 trong đó i là một số nguyên
Từ đó ta có bất phương trình a ≤ i2 ≤ b => √a ≤ i ≤ √b, vậy để in ra các số chính phương từ a tới b bạn chỉ cần duyệt các số i từ √a tới √b và in ra bình phương của i là được.
Bạn cần chú ý cận √a vì nó bị làm tròn xuống nên có thể dẫn đến kết quả bị sai.
#include “stdio.h” #include “math.h” int main(){ int a = 10, b = 50; int c1 = sqrt(a), c2 = sqrt(b); if(c1 * c1
Xem theo bài giảng của mình về số chính phương :
Da0RIcvk5l0
Nguồn: https://luatduonggia.edu.vn
Danh mục: Tổng hợp