Kiểm tra Số chẵn, số lẻ và số nguyên tố
Mục tiêu: Nhập một số, mèo cho biết số đó chẵn hay lẻ, và có phải số nguyên tố không.
Em sẽ học gì
- Nội dung trong bài: phép chia lấy dư, để xét một số chia hết hay không.
- Vòng lặp có điều kiện để đi tìm ước số, với hai lý do dừng nối bằng khối hoặc.
- Và bước bảo vệ: xét trường hợp đặc biệt trước, để vòng lặp không chạy mãi.

Bài làm như sau. Chọn nhóm Biến số, bấm Tạo một biến, đặt tên là n: số cần xét. Tạo biến d: số đem ra chia thử.

Thuật toán. 1. Chẵn hay lẻ: n chia 2 dư 0 thì chẵn, nếu không thì lẻ. 2. Nguyên tố: n < 2 thì không phải; nếu không, d = 2, tăng d cho đến khi d = n hoặc n chia hết cho d; cuối cùng d = n thì n là số nguyên tố.
Sơ đồ khối ở khung bên phải. Phần một: nhập n, xét n chia 2 dư 0, rồi nói số chẵn hoặc số lẻ. Phần hai: n nhỏ hơn 2 thì không phải số nguyên tố. Nếu không, d bắt đầu từ 2 và tăng dần, cho đến khi d bằng n hoặc d là ước của n. Cuối cùng, d bằng n thì n là số nguyên tố, nếu không thì n là hợp số.

Chọn nhóm Sự kiện, kéo khối: Khi bấm vào cờ xanh,

Chọn nhóm Cảm biến, gắn khối hỏi và đợi, gõ: Nhập số n,

rồi khối đặt biến thành, trong nhóm Biến số, chọn n,

thả khối câu trả lời, trong nhóm Cảm biến, vào ô giá trị.

Chọn nhóm Điều khiển, gắn khối nếu thì, nếu không thì,

Điều kiện dựng ở chỗ trống bên dưới. Lấy khối chia lấy dư, trong nhóm Các phép toán, ô bên phải gõ 2,

ô bên trái thả biến n, trong nhóm Biến số.

Lấy khối so sánh bằng, ô bên phải gõ 0, kéo khối chia lấy dư vào ô bên trái, rồi kéo cả điều kiện vào khối nếu: n chia 2 dư 0.
Giải thích: Khối chia lấy dư cho ta phần dư của phép chia. 7 chia 2 dư 1. 12 chia 2 dư 0. Dư 0 nghĩa là chia hết.

Nhánh trên: khối nói trong 2 giây, trong nhóm Hiển thị, gõ: Số chẵn.

Nhánh nếu không thì: khối nói trong 2 giây, gõ: Số lẻ.

Chạy thử: nhập 12. Mèo nói: Số chẵn. Nhập 7: Số lẻ. Phần một đã xong.

Phần hai, số nguyên tố: là số từ 2 trở lên, chỉ chia hết cho 1 và chính nó. Thuật toán: n nhỏ hơn 2 thì không phải. Nếu không: cho d bằng 2, rồi tăng d dần, cho đến khi d bằng n, hoặc n chia hết cho d. Sau vòng lặp, nếu d bằng n, nghĩa là không tìm được ước nào, thì n là số nguyên tố.

Chọn nhóm Điều khiển, gắn thêm một khối nếu thì, nếu không thì, xuống dưới cùng,

điều kiện: lấy khối so sánh nhỏ hơn đặt ra chỗ trống, bên phải gõ 2,

bên trái thả biến n, kéo vào khối nếu.

Nhánh trên: khối nói trong 2 giây, gõ: Không phải số nguyên tố.
Giải thích: Đây là bước bảo vệ: số 0, số 1 và số âm được trả lời ngay. Nếu bỏ bước này, nhập 1 thì vòng lặp bên dưới sẽ chạy mãi không dừng, vì d tăng mãi mà không bao giờ bằng 1.

Nhánh nếu không thì: khối đặt biến thành, trong nhóm Biến số, chọn d, gõ 2: bắt đầu chia thử từ 2.

Chọn nhóm Điều khiển, gắn khối lặp lại cho đến khi,

bên trong, khối thay đổi biến một lượng, chọn d, giữ số 1: mỗi lần lặp, thử số tiếp theo.

Vòng lặp dừng vì một trong hai lý do: d đã lên tới n, hoặc đã tìm thấy một ước. Hai điều kiện nối với nhau bằng khối hoặc.

Trước hết là điều kiện tìm thấy ước: lấy khối chia lấy dư, trong nhóm Các phép toán, đặt ra chỗ trống,

ô bên phải thả biến d,

ô bên trái thả biến n.

Lấy khối so sánh bằng, đặt bên dưới, bên phải gõ 0, kéo khối chia lấy dư vào bên trái: n chia d dư 0.

Lấy khối hoặc, trong nhóm Các phép toán, đặt ra chỗ trống, thả một khối so sánh bằng vào ô bên trái của nó,

bên phải thả biến n,

bên trái thả biến d: d bằng n. Kéo điều kiện chia hết vào ô bên phải của khối hoặc, rồi kéo cả khối hoặc vào ô điều kiện của vòng lặp.

Sau vòng lặp, xét xem dừng vì lý do nào. Gắn khối nếu thì, nếu không thì, bên dưới vòng lặp,

điều kiện: khối so sánh bằng,

bên phải thả biến n,

bên trái thả biến d, kéo vào khối nếu.

d bằng n, tức là không có ước nào ở giữa: khối nói trong 2 giây, gõ: Là số nguyên tố.

Nhánh nếu không thì: khối nói trong 2 giây,

lấy khối kết hợp đặt ra chỗ trống, ô thứ nhất gõ: Hợp số, chia hết cho,

ô thứ hai thả biến d, rồi kéo khối kết hợp vào ô lời nói. Ta vừa làm phần hai: n nhỏ hơn 2 thì trả lời ngay. Nếu không, tăng d từ 2 cho đến khi d bằng n hoặc n chia hết cho d, rồi kết luận.

Kiểm thử: nhập 17. Số lẻ, và là số nguyên tố: d chạy từ 2 đến 17 mà không gặp ước nào. Nhập 49: số lẻ. Hợp số, chia hết cho 7: vòng lặp dừng ngay khi d bằng 7. Nhập 2: số chẵn, và là số nguyên tố. Lúc này d bằng n ngay từ đầu, vòng lặp không chạy lần nào. Nhập 1: số lẻ, không phải số nguyên tố. Nhờ bước bảo vệ, chương trình trả lời ngay chứ không bị treo. Nhập 97: số lẻ, là số nguyên tố. Và 100: số chẵn, hợp số, chia hết cho 2.

Các khối mới trong bài
- Khối chia lấy dư: cho phần dư của phép chia, ở đây là dư không là chia hết
Kỹ thuật lập trình đã học
- Về kỹ thuật lập trình, bài này ta học: phép chia lấy dư
- Vòng lặp tìm kiếm: thử lần lượt d bằng 2, 3, 4, cho đến khi tìm thấy ước, hoặc hết số để thử.
- Vòng lặp có hai lý do dừng, nối bằng khối hoặc. Sau vòng lặp, phải xét xem nó dừng vì lý do nào.
- Và bước bảo vệ: xét n nhỏ hơn 2 trước, để tránh vòng lặp chạy mãi.
Bài tập
Bài tập: tạo thêm một biến đếm số lần lặp. Rồi cho vòng lặp dừng sớm hơn, khi d nhân d lớn hơn n. Thử lại với số 97 và so sánh số lần lặp.