HomeLập trình Scratch

Hưỡng dẫn tìm hiểu về số Amstrong – thuật toán 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é.
  •  
  •  

Tìm hiểu về số Amstrong – thuật toán minh họa bằng Pascal và Scratch

Có những số tự nhiên có những tính chất rất đẹp và thú vị, chẳn hạn các bạn thấy 153 = 13 + 53 + 33, số như vậy gọi là số Amstrong. Định nghĩa đầy đủ số Amstrong như sau: Số tự nhiên n gọi là Amstrong nếu nó bằng tổng lập phương các chữ số của nó, ta hãy tìm cách lập trình kiểm tra một số tự nhiên n (n < 2 tỉ) xem nó có phải là số Amstrong hay không bằng Pascal và Scratch nhé.

Thuật toán kiểm tra số Amstrong

Dựa vào định nghĩa số Amstrong ta có ngay cách kiểm tra, đó là tách lấy từng chữ số của số cần kiểm tra sao đó lập phương lên và cộng dồn lại, và để tách được từng chữ số của số nhập vào ta lại có thể sử dụng phép toán Div và mod.

Như vậy ta sẽ dùng một biến để lưu kết quả cộng dồn (S chẳng hạn) khởi động S = 0;

Lặp lại cho đến khi n = 0 (n là số tự nhiên cần kiểm tra) các thao tác sau:

  • Cộng dồn (n mod 10) lập phương vào S (Cộng dồn lập phương của chữ số cuối cùng)
  • Gán n bằng n div 10 (Cắt bỏ chữ số cuối cùng của n đi)

 

Chương trình kiểm tra số Amstrong trong Pascal

Dữ liệu vào file: Amstrong.inp Dữ liệu ra file: Amstrong.out
Chứa số n Yes (No)

code Pascal

Chương trình kiểm tra số Amstrong trong Scratch

Khi đã viết được thuật toán bằng Pascal thì việc kéo thả để tạo code trong Scratch hoàn toàn đơn giản phải không các bạn.

Các bạn hãy tạo một nhân vật, sau đó lập trình cho nhân vật theo các gợi ý sau:

  • Yêu cầu nhập vào một số
  • Tạo biến và lập trình theo thuật toán tương tự thuật toán viết bằng Pascal ở trên

Sau đó các bạn chạy thử nghiệm và so sánh kết quả xem thế nào nhé.

Nếu trong quá trình code có gì thắc mắc các bạn đừng ngần ngại comment phía dưới bài viết nhé, mặc dù mình rất bận nhưng cũng sẽ cố gắng chia sẻ cùng các bạn. Chúc các bạn học tốt!

 

Comments (0)

Trả lời

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