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 : Khối tự nhiên gồm môn nào? Ngành nào? Trường nào
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 : Đầy đủ lý thuyết và bài tập Toán tập hợp lớp 10
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 : Đầy đủ lý thuyết và bài tập Toán tập hợp lớp 10
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