Categories: Tổng hợp

[C]. Số Chính Phương

Published by

main frame

1.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 :

  1. 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
  2. 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

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ự

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 <= n; i++){ if(cp(i) == 1){ printf(“%d “, i); } } return 0; }

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 <= sqrt(n); i++){ printf(“%d “, i * i); } return 0; }

Bài 2. Liệt kê (đếm) các số chính phương từ a tới b.

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 <= b; i++){ if(cp(i) == 1){ printf(“%d “, i); } } return 0; }

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 < a){ ++c1; } for(int i = c1; i <= c2; i++){ printf(“%d “, i * i); } return 0; }

Xem theo bài giảng của mình về số chính phương :

Da0RIcvk5l0

This post was last modified on 05/02/2024 10:31

Published by

Bài đăng mới nhất

Con số may mắn hôm nay 23/11/2024 theo năm sinh: Nhặt TIỀN lộc từ số hợp mệnh

Con số may mắn hôm nay 23/11/2024 theo năm sinh: Nhặt TIỀN từ con số…

6 giờ ago

Tử vi thứ 7 ngày 23/11/2024 của 12 con giáp: Thìn muộn phiền, Dậu có xung đột

Tử vi thứ bảy ngày 23/11/2024 của 12 con giáp: Tuổi Thìn chán nản, tuổi…

6 giờ ago

4 con giáp vận trình xuống dốc, cuối tuần này (23-24/11) làm gì cũng xui, nguy cơ thất bại

Vận may của 4 con giáp đang ngày càng xuống dốc. Cuối tuần này (23-24/11),…

10 giờ ago

Số cuối ngày sinh dự báo người GIÀU PHƯỚC, trường thọ khỏe mạnh, trung niên PHẤT lên mạnh mẽ

Con số cuối cùng trong ngày sinh dự đoán con người sẽ GIÀU CÓ, sống…

15 giờ ago

Cuối tuần này (23-24/11) cát tinh ban lộc, 4 con giáp may mắn ngập tràn, thành công ngoài mong đợi

Cuối tuần này (23-24/11), 4 con giáp sẽ gặp nhiều may mắn và thành công…

15 giờ ago

Tử vi hôm nay – Top 3 con giáp thịnh vượng nhất ngày 22/11/2024

Tử vi hôm nay – Top 3 con giáp thịnh vượng nhất ngày 22/11/2024

16 giờ ago