Tải bản đầy đủ (.docx) (17 trang)

Định nghĩa hàm kiểm tra số nguyên tố để giải các bài toán liên quan trong bồi dưỡng học sinh giỏi tin học 8

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (102.65 KB, 17 trang )

I. TÊN BIỆN PHÁP:
"ĐỊNH NGHĨA HÀM KIỂM TRA SỐ NGUYÊN TỐ ĐỂ GIẢI CÁC BÀI
TOÁN LIÊN QUAN TRONG BỒI DƯỠNG HỌC SINH GIỎI TIN HỌC 8”.
II.

NỘI DUNG BIỆN PHÁP:

1. Lý do chọn biện pháp:
Nội dung Tin học lập trình lớp 8 là một nội dung mới lạ đối với đa số học sinh, đối với
học sinh THCS việc học Toán, Ngoại ngữ đã khó nay học lập trình thì điều đó lại càng khó khăn
hơn bởi nhiều khái niệm, thuật ngữ, cấu trúc dữ liệu, cú pháp câu lệnh học sinh mới được tiếp
xúc lần đầu. Chính vì vậy mà học sinh dễ mắc sai lầm khi lập trình giải quyết các bài tốn cơ
bản bằng ngơn ngữ lập trình Pascal. Trong q trình giảng dạy mơn Tin học lớp 8 và bồi dưỡng
học sinh giỏi Tin học 8, tôi thấy rằng, việc học sinh lập trình bằng ngơn ngữ lập trình Free
Pascal để giải các bài tốn về chun đề số nguyên tố trên máy tính thường gặp rất nhiều khó
khăn trong việc sử dụng các câu lệnh để diễn tả các bước của thuật toán, phát hiện và sửa lỗi về
cú pháp, ngữ nghĩa, đặc biệt xử lý các lỗi về thơng báo kết quả của bài tốn. Với các bài toán về
chuyên đề số nguyên tố thoạt nhìn có vẽ rất đơn giản, song đa số các em đều mắc các lỗi rất cơ
bản, thậm chí những lỗi này vẫn thường xuyên xuất hiện ở các em tham gia bồi dưỡng học sinh
giỏi. Từ những điều trăn trở đó mà qua một số năm giảng dạy, tơi đã có một số kinh nghiệm để
khắc phục những khó khăn cho học sinh lớp 8 khi học Tin học và bồi dưỡng học sinh giỏi. Đó
cũng là lý do tôi chọn và nghiên cứu biện pháp: "Định nghĩa hàm kiểm tra số nguyên tố để
giải các bài toán liên quan trong bồi dưỡng học sinh giỏi Tin học 8”. Để làm sao đó giúp cho
các em có sự đam mê học tập bộ môn Tin học nhất là tiết thực hành và rèn luyện cho học sinh
tính tư duy, tính sáng tạo trong q trình lập trình.
2. Mục đích của biện pháp:
Qua biện pháp này:
1


- Giúp học sinh biết định nghĩa (viết) hàm kiểm tra một số có phải ngun tố hay khơng một


cách chính xác.
- Cung cấp cho học sinh cách sử dụng hàm kiểm tra số nguyên tố để giải bài tập về số
ngun tố bằng ngơn ngữ lập trình Pascal.
- Định hình cho học sinh các nội dung cần giải quyết của bài toán.
- Cung cấp cho học sinh các phương pháp xử lý, giải quyết các vấn đề quan trọng của bài
toán.
- Cách xử lý các lỗi thường gặp trong khi lập trình và xử lý kết quả.
3. Cách thức tiến hành:
3.1. Kiến thức cần nhớ:
- Khái niệm số nguyên tố:
Số nguyên tố là những số chỉ có hai ước là 1 và chính nó.
- Cách kiểm tra số ngun tố:
Có nhiều cách để kiểm tra một số n đã cho có phải là số ngun tố hay khơng. Tuy nhiên,
phương pháp tối ưu nhất để kiểm tra số nguyên tố đó là phép chia thử nghiệm, kiểm tra xem n
có là bội số của bất kỳ số nguyên nào giữa 2 và . Mọi hợp số n đều có ước nguyên tố không vượt
quá căn bậc hai của .
- Khái niệm về chương trình con:
Là một đoạn chương trình thực hiện trọn vẹn hay một chức năng nào đó.
Trong Pascal, có 2 dạng chương trình con:
Thủ tục (PROCEDURE): Dùng để thực hiện một hay nhiều nhiệm vụ nào đó.
Hàm (FUNCTION): Trả về một giá trị nào đó (có kiểu vơ hướng, kiểu string). Hàm có thể
sử dụng trong các biểu thức.
2


- Cấu trúc của một chương trình có sử sụng chương trình con:
PROGRAM Tên_chương_trình;
USES CRT;
CONST ............;
VAR


............;

PROCEDURE THUTUC[(Các tham số)];
[Khai báo Const, Var]
BEGIN
..............
END;
FUNCTION HAM[(Các tham số)]:<Kiểu dữ liệu>;
[Khai báo Const, Var]
BEGIN
..............
HAM:=<Giá trị>;
END;
BEGIN {Chương trình chính}
...................
THUTUC[(...)];
...................
A:= HAM[(...)];
...................
END.
- Định nghĩa (viết) hàm kiểm tra số nguyên tố:
3


a. Giải thuật 1:
B1: sont  true
B2: Nếu n < 2 thì sont  flase
Cho i  2 đến Nếu n chia hết cho i thì sont  false


Ngược lại:

* Chương trình minh họa:
Function sont(n: longint): boolean;
Var

i: longint;

Begin
sont:= true;
If n <2 then sont:= false
else for i:=2 to trunc(sqrt(n)) do If n mod i = 0 then sont:= false;
End;
b. Giải thuật 2:
Nếu n < 2 thì gán sont  flase
i2

Ngược lại:

Trong khi i và n khơng chia hết cho i thì i  i + 1
sont  (i > )
* Chương trình minh họa:
Function sont(n: longint): boolean;
Var

i:longint;

Begin
If n < 2 then sont:=false
else


begin i:=2;
4


while (i<= trunc(sqrt(n))) and (n mod i<>0) do inc(i);
sont:= (i>sqrt(n));
end;
End;
c. Nhận xét: So sánh giữa hai giải thuật ta rút ra nhận xét như sau:
- Giải thuật 1 học sinh dễ hiểu và dễ viết hơn
- Song thời gian để kiểm tra giải thuật 1 thực hiện nhiều vòng lặp hơn, phải thực hiện ít nhất
lần kiểm tra, giải thuật 2 chỉ cần gặp trường hợp n chia hết cho một giá trị nào đó là kết thúc
vịng lặp.
d. Sử dụng hàm kiểm tra số nguyên tố để giải quyết bài tốn cơ bản:
Bài tốn: Viết chương trình nhập vào một số N, kiểm tra xem số đó có phải là số ngun tố
hay khơng?
Chương trình minh họa:
Uses crt;
Var n: longint;
Function sont(n: longint): boolean;
Var

i: longint;

Begin
sont:= true;
If n < 2 then sont:= false
else for i:=2 to trunc(sqrt(n)) do If n mod i = 0 then sont:= false;
End;

BEGIN
Clrscr;
5


Write(' Nhap n: '); Readln(n);
If sont(n) then writeln(' YES ') else writeln(' NO ');
Readln
END.
3.2. Các dạng bài tập về số ngun tố:
Xét bài tốn 1: Viết chương trình nhập vào một số nguyên dương n, in ra màn hình các số
nguyên tố nhỏ hơn hoặc bằng n.
+ Xác định bài toán:
Input:

n, là số nguyên dương bất kỳ.

Output: Trả lời: “Các số nguyên tố nhỏ hơn hoặc bằng n.
+ Giải thuật:
- Viết hàm kiểm tra số nguyên tố
- Nếu n<2 thì thơng báo khơng có, ngược lại
- Cho i  2 đến n, nếu i là số nguyên tố thì in i ra màn hình.
+ Chương trình: HS dựa vào thuật tốn để viết chương trình.
Xét bài tốn 2: Cho 2 số nguyên dương P và Q. Hãy đếm số lượng các số nguyên tố N thỏa
mãn P ≤ N ≤ Q. (0< P ≤ Q ≤ 65535).
+ Xác định bài toán:
Input:

P và Q, là số nguyên dương bất kỳ.


Output: Trả lời: “Số lượng các số nguyên tố tìm được trong khoảng P và Q.
+ Giải thuật:
- Viết hàm kiểm tra số nguyên tố
- Cho d0
- Cho i  P tới Q: Nếu gặp số nguyên tố thì tăng d lên 1 đơn vị.
6


- In kết quả ra màn hình.
+ Chương trình: HS dựa vào thuật tốn để viết chương trình.
Xét bài tốn 3: Số nguyên tố sinh đôi:
Hai số p và q được gọi là cặp nguyên tố sinh đôi nếu p - q = 2.
Chẳng hạn các số nguyên tố sinh đơi là (3 5); (5 7); ...
Viết chương trình: Tìm tất cả các cặp nguyên tố sinh đôi nhỏ hơn n và số lượng các cặp.
+ Xác định bài toán:
Input: n, là số tự nhiên dương bất kỳ.
Output: In ra các cặp số NT sinh đôi p và q nhỏ hơn n và số lượng các cặp.
+ Giải thuật:
- Viết hàm kiểm tra số nguyên tố
+ Cho d0
+ Cho i  3 tới n-2: Nếu i là số nguyên tố và i+2 là số nguyên tố thì
in i và i+2 ra màn hình, đồng thời tăng d lên 1 đơn vị.
- In số lượng các cặp số nguyên tố sinh đơi d ra màn hình.
+ Chương trình: HS dựa vào thuật tốn để viết chương trình.
Xét bài tốn 4: Số siêu nguyên tố là số nguyên tố mà khi bó đi một số tuỳ ý các chữ số bên
phải của nó thì phần cịn lại vẫn tạo thành một số nguyên tố. Hãy viết chương trình nhập vào
một số nguyên N kiểm tra xem N có phải siêu nguyên tố khơng.
+ Xác định bài tốn:
Input: n, là số ngun dương bất kỳ.
Output: Thông báo: n là số siêu nguyên tố hoặc không phải là số siêu nguyên tố.

+ Giải thuật:
- Viết hàm kiểm tra số nguyên tố
7


- Trong khi sont(n) đúng thì Gán n:= n div 10
- Nếu n = 0 thì “Yes” ngược lại “No”
+ Chương trình: HS dựa vào thuật tốn để viết chương trình.
Xét bài tốn 5: Mọi số tự nhiên chẵn lớn hơn 2 đều là tổng của 2 số nguyên tố. Viết
chương trình thực hiện tách một số tự nhiên thành tổng của hai số nguyên tố.
+ Xác định bài toán:
Input:

n, là số nguyên dương bất kỳ.

Output: In ra màn hình tổng của hai số nguyên tố của n.
+ Giải thuật:
- Viết hàm sont(n)
- Gán i  2;
- Trong khi i <= n - i:
Nếu i, n-i nguyên tố thì in i, + , (n - i) và tăng i lên 1 đơn vị.
Ngược lại tăng i lên 1 đơn vị.
+ Chương trình: HS dựa vào thuật tốn để viết chương trình.
Xét bài tốn 6: Dãy số tự nhiên a1, a2,.., ak được gọi là dãy hạnh phúc nếu nó thoả mãn các
điều kiện sau :
- Dãy trên là dãy giảm dần.
- Với mọi i (1Viết chương trình: Nhập vào một số N từ bàn phím và in ra màn hình một dãy số hạnh phúc
dài nhất với số hạng đầu tiên là N .
+ Xác định bài toán:

Input:

n, là số nguyên dương bất kỳ.
8


Output: In ra màn hình dãy số hạnh phúc.
+ Giải thuật:
- Viết hàm kiểm tra số nguyên tố: sont(n)
- Cho i  n về 1 và kiểm tra: Nếu sont(i) hoặc n mod i = 0 thì in i ra màn hình.
+ Chương trình: HS dựa vào thuật tốn để viết chương trình.
3.3. Bài tập vận dụng:
Bài tập 1: Tìm các số tự nhiên nhỏ hơn hoặc bằng n mà sau khi làm phép phân tích ra thừa
số nguyên tố có nhiều nhân tử nhất.
Bài tập 2: Viết chương trình nhập vào số n và in ra các ước số nguyên tố của n.
Bài tập 3: Nhập vào một số nguyên dương n. In ra số nguyên tố nhỏ nhất lớn hơn n.
Bài tập 4: Viết chương trình cho phép phân tích một số ra thừa số nguyên tố và ghi kết quả
dưới dạng tích các lũy thừa. Ví dụ: 300 = 2^2.3.5^2
Bài tập 5: Tạo một dãy gồm n (3xuất dãy và xuất ra vị trí các số nguyên tố của dãy.
Bài tập 6: Số nguyên tố ghép
Xét dãy A các số nguyên tố 2, 3, 5, 7, 11, 13, 17, 19,...
và dãy B gồm các số thu được từ dãy A bằng cách ghép hai số liên tiếp trong A: 23, 57,
1113, 1719, ...
Trong dãy B có những phần tử là số nguyên tố. Chẳng hạn 23, 3137, 8389, 157163...
Các số nguyên tố trong dãy B gọi là số nguyên tố ghép.
Yêu cầu: Cho trước số nguyên dương K < 500, hãy tìm số nguyên tố ghép thứ K.
I

O


nput utput
2
31
9


37
Bài tập 7: Tìm số siêu nguyên tố nhỏ hơn hoặc bằng n, với n là số nhập từ bàn phím. (Số
siêu nguyên tố là số nguyên tố mà khi bỏ đi một số tùy ý các chữ số bên phải của nó thì phần
cịn lại vẫn tạo thành một số nguyên tố. Ví dụ: 7333 là số siêu nguyên tố vì 733, 73, 7 đều là các
số nguyên tố.)
Bài tập 8: Một số được gọi là "số đẹp" nếu tổng bình phương các chữ số của nó (trong
dạng biểu diễn thập phân) là một số nguyên tố.
Ví dụ, 12 là một "số đẹp" vì 1+2=5 là số nguyên tố.
Yêu cầu: Hãy viết phương trình nhập vào một số nguyên dương N từ bàn phím, kiểm tra và
in kết quả ra màn hình. Nếu N là "số đẹp" thì in ra màn hình là "YES"ngược lại in ra là "NO".
3.4. Hướng dẫn xử lý các lỗi gặp phải.
- Lỗi về thuật toán, kiểu dữ liệu: Điều chỉnh lại thuật toán, thay đổi vị trí các câu lệnh có
thể, loại bỏ thuật tốn sai, tìm thuật tốn khác nghĩa làm lại từ đầu.
Ví dụ: Đối với bài tốn 1,3: Nếu khai báo n, P, Q kiểu dữ liệu là Integer thì khi chạy bộ test với
giá trị vượt quá 32767 chương trình sẽ cho kết quả sai.
Do vậy để chương trình cho kết quả đúng thì khai báo biến n,P,Q là thuộc kiểu dữ liệu longint.
- Lỗi vòng lặp: Trong vòng lặp While: Nếu Ðiều kiện khơng bao giờ sai thì câu lệnh sẽ phải làm
hồi, lúc đó ta có vịng lặp vô hạn. Trong trường hợp này, để dừng chương trình, hãy nhấn đồng
thời hai phím Ctrl và Pause.
Ðể tránh các vịng lặp vơ hạn, trong thân của vịng WHILE cần có ít nhất một lệnh có tác
dụng làm biến đổi các đại lượng tham gia trong Ðiều kiện để đến một lúc nào đó thì Ðiều kiện
sẽ sai và do đó vịng lặp sẽ kết thúc.
- Lỗi về trình tự: Phải xem lại thuật tốn, phân tích lại từ trên xuống dưới để đặt lại cho đúng

với thuật toán.
10


- Lỗi về cú pháp: viết lại cho đúng cú pháp của ngơn ngữ lập trình mà mình đang sử dụng.
+ Lỗi sau câu lệnh ta không sử dụng dấu chấm phẩy, hay kết thúc chương trình khơng có dấu
chấm, hay từ khố DOWNTO nếu ta viết DOWN TO thì sẽ khơng có nghĩa.
+ Sử dụng dấu ; sai vị trí:
Trước Else khơng có dấu chấm phẩy.
Sử dụng dấu chấm phẩy sau từ khoá do trong các câu lệnh lặp câu lệnh lặp rỗng khơng làm
việc gì cả.
3.5. Kiểm tra, chạy thử.
Sau viết chương trình nhấn phím ALT + F9 để dịch và sữa lỗi nếu có.
Nhấn phím CTRL + F9 để chạy chương trình.
Để kiểm tra sự chính xác của chương trình, giáo yêu cầu học sinh lấy những bộ test dữ
liệu khác nhau, đảm bảo duyệt và kiểm tra hết các trường hợp xảy ra.
Bên cạnh đó giáo viên cung cấp cho học sinh những bộ test có tính chất nâng cao để
kiểm tra chương trình về tính đúng đắn và tồn diện như dữ liệu có phạm vi lớn, ...
4. Kết quả đạt được.
* Khi chưa áp dụng biện pháp:
- HS thường lúng túng, khơng tìm ra hướng giải quyết khi gặp các lỗi như đã nói ở trên.
- Khơng có kỹ năng để nhận dạng và phân biệt được các trường hợp khác nhau của bài
toán.
Tổng hợp kết quả thu được khi chưa áp dụng biện pháp:
Điểm 0 –

Điểm 5.0-

Điểm 6.5Điểm >8.0



số

Điểm 3.0-

2.0

<5.0

<6.5

<8.0

TL
SL

SL
%

SL
TL %

SL
TL %

SL
TL %

TL %
11



4

1

25.0

2

50.0

1

25.0

0

0

0

0

* Sau khi áp dụng biện pháp:
Qua thời gian áp dụng biện pháp trên trong quá trình bồi dưỡng cũng như giảng dạy tất cả
các vấn đề gặp phải đối với giáo viên và học sinh đã được giải quyết. Học sinh nắm kiến thức,
phương pháp và có kĩ năng làm bài tốt. Giáo viên hình thành được phương pháp, kĩ năng, kĩ xảo
trong dạy học.
Trong 2 năm học 2018 -2019 và 2019 – 2020 kết quả HSG Tin học 8 được nâng cao rõ rệt,

chất lượng kiểm tra đạt tỉ lệ cao.
Tổng hợp kết quả thu được sau khi áp dụng biện pháp:
Điểm 0 –

4

Điểm 5.0-

Điểm 6.5Điểm >8.0


số

Điểm 3.0-

2.0

<5.0

<6.5

<8.0

TL
SL
0

SL
%
0


HIỆU TRƯỞNG

1

SL
TL %
25.0

1

SL
TL %
25.0

1

SL
TL %
25.0

1

TL %
25.0

Người viết báo cáo

Võ Thị Dương


12


13


MỤC LỤC

I.

TÊN BIỆN PHÁP:

"ĐỊNH NGHĨA HÀM KIỂM TRA SỐ NGUYÊN TỐ

ĐỂ GIẢI CÁC BÀI TOÁN LIÊN QUAN TRONG BỒI DƯỠNG HỌC SINH
GIỎI TIN HỌC 8”.........................................................................................................1
II. NỘI DUNG BIỆN PHÁP:......................................................................................1
1. Lý do chọn biện pháp:............................................................................................1
2. Mục đích của biện pháp:.........................................................................................1
3. Cách thức tiến hành:...............................................................................................1
14


3.1. Kiến thức cần nhớ:...........................................................................................1
3.2. Các dạng bài tập về số nguyên tố:...................................................................3
3.3. Bài tập vận dụng:..............................................................................................5
3.4. Hướng dẫn xử lý các lỗi gặp phải....................................................................6
3.5. Kiểm tra, chạy thử............................................................................................6
4. Kết quả đạt được...................................................................................................6


15


16


17



×