HomeChia sẻ

Thuật toán tìm BCNN minh họa bằng Pascal và Scratch

Like Tweet Pin it Share Share Email
Like và share giúp mình phát triển website nhé.
  •  
  •  

Tiếp theo bài viết về thuật toán tìm ƯCLN thì không thể nào không nói đến thuật toán tìm BCNN rồi phải không các bạn, riêng về thuật toán tìm BCNN thì cũng có rất nhiều, trong bài viết này mình xin giới thiệu với các bạn cách tìm BCNN giống như cách học sinh lớp 6 thực hiện như sau:

Thuật toán tìm BCNN (a,b)

Với a, b là hai số tự nhiên có các trường hợp sau:

  • Nếu cả a và b đều bằng 0 thì không tồn tại BCNN(a,b)
  • Nếu một trong a hay b bằng 0 thì BCNN(a,b) = 0
  • Nếu cả a, b đều khác 0 thì ta tìm bằng cách đem số lớn lần nhân với 1 rồi chia cho số nhỏ, nếu tích đó không chia hết cho số nhỏ thì đem số lớn nhân với 2, …, khi nào chia hết thì tìm được BCNN

Chương trình tìm BCNN (a,b) viết bằng Pascal

Chương trình tìm BCNN (a,b) minh họa bằng Scratch

(các bạn hãy kéo xuống dưới cùng sẽ có file Word minh hướng dẫn từng bước các viết)

Chương trình  mình viết chưa xử lí trường hợp cả a và b đều bằng 0 các bạn tự bổ sung vào nhé.

Các bạn thử suy nghĩ xem tại sao ở  vòng lặp While trong Pascal thì dùng điều kiện (max*i mod a<>0) hoặc (max*i mod b<>0), còn trong Scratch thì lại dùng (max*i mod a<>0) và (max*i mod b<>0) nhé

Thuật toán khác tìm BCNN(a,b)

Ngoài thuật toán trên thì ta có thể tìm BCNN(a,b) thông qua công thức sau: BCNN(a,b)*ƯCLN(a,b) = a*b

Như vậy BCNN(a,b)= a*b/ƯCLN(a,b), có nghĩa là để tìm BCNN ta tìm ƯCLN trước.

Thuật toán này đơn giản hơn nếu mình đã biết ƯCLN(a,b) rồi phải không nào. Các bạn tự viết chương trình Pascal và Scratch để minh họa cho thuật toán này nhé.

Mở rộng tìm BCNN của 3 số

Viết chương trình tìm BCNN (a,b,c) (a,b,c< 1000) (dùng chương trình con)

Các bạn hãy viết chương trình trên bằng Pascal và Scratch nhé,

Bài tiếp theo mình sẽ nói về hai phép toán Div và Mod các bạn đón đọc nhé

File Word hướng dẫn

Comments (2)

Trả lời

Your email address will not be published. Required fields are marked *