Nâng cao · Mức D · Bài 2

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.
Kết quả cần đạt
Kết quả cần đạt: bấm cờ xanh để chạy thử.
138

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ử.

Bước 1

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ố.

238

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ố.

Bước 2
338

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

Bước 3
438

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

Bước 4
538

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

Bước 5
638

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

Bước 6
738

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

Bước 7
838

Đ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ước 8
938

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

Bước 9
1038

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.

Bước 10
1138

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

Bước 11
1238

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

Bước 12
1338
Chạy thử

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

Bước 13
1438

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ố.

Bước 14
1538

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,

Bước 15
1638

đ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ước 16
1738

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

Bước 17
1838

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.

Bước 18
1938

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.

Bước 19
2038

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

Bước 20
2138

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.

Bước 21
2238

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.

Bước 22
2338

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ước 23
2438

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

Bước 24
2538

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

Bước 25
2638

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.

Bước 26
2738

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ước 27
2838

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

Bước 28
2938

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.

Bước 29
3038

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,

Bước 30
3138

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

Bước 31
3238

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

Bước 32
3338

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

Bước 33
3438

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ố.

Bước 34
3538

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

Bước 35
3638

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

Bước 36
3738

ô 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.

Bước 37
3838
Chạy thử

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.

Bước 38

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.

Tổng 1 đến n Tìm số lớn nhất trong danh sách
ZaloCộng đồng hỗ trợ lập trình ScratchCộng đồng hỗ trợ