1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Đị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

17 30 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 68,74 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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”.. Trong quá trình giảng dạy môn Tin học lớp 8 và bồi dưỡng họ

Trang 1

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 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 toán cơ bản bằng ngôn ngữ lập trình Pascal Trong quá 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 toán về chuyên đề 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 toá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 quá trình lập trình

Trang 2

2 Mục đích của biện pháp:

Qua biện pháp này:

- Giúp học sinh biết định nghĩa (viết) hàm kiểm tra một số có phải nguyên 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ố nguyên 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ố nguyên tố:

Có nhiều cách để kiểm tra một số n đã cho có phải là số nguyên 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à √ n Mọi hợp số n đều có ước nguyên tố không vượt quá căn bậc hai của n

- 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 đó

Trang 3

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

- 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[( )];

Trang 4

- Định nghĩa (viết) hàm kiểm tra số nguyên tố:

a Giải thuật 1:

B1: sont  true

B2: Nếu n < 2 thì sont  flase

Ngược lại: Cho i  2 đến √n Nếu n chia hết cho i thì sont  false

* 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

Ngược lại: i  2

Trong khi i √n và n không chia hết cho i thì i  i + 1 sont  (i >√n )

* Chương trình minh họa:

Function sont(n: longint): boolean;

Var i:longint;

Begin

If n < 2 then sont:=false

Trang 5

else begin i:=2;

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

n 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 toán cơ bản:

Bài toá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ố nguyên 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

Trang 6

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ố nguyên tố:

Xét bài toá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 toán để viết chương trình.

Xét bài toá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

Trang 7

- Cho i  P tới Q: Nếu gặp số nguyên tố thì tăng d lên 1 đơn vị.

- In kết quả ra màn hình

+ Chương trình: HS dựa vào thuật toán để viết chương trình.

Xét bài toá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 toán để viết chương trình.

Xét bài toá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 toán:

Input: n, là số nguyên 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:

Trang 8

- Viết hàm kiểm tra số nguyên tố

- 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 toán để viết chương trình.

Xét bài toá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 toán để viết chương trình.

Xét bài toá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 (1<i<=k) ai hoặc là số nguyên tố, hoặc là ước của một trong các số a1, a2, , ai-1

Viế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:

Trang 9

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

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 toá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 (3<n<20) số nguyên nhận các giá trị ngẫu nhiên từ 1 đến 99 xuấ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 nput

O utput

Trang 10

31

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 toán sai, tìm thuật toán khác nghĩa làm lại từ đầu

Ví dụ: Đối với bài toá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

hoà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

Trang 11

- Lỗi về trình tự: Phải xem lại thuật toá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

- 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ừ khoá 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à toà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:

số

Điểm 0 –

2.0

Điểm

3.0-<5.0

Điểm

5.0-<6.5

Điểm

6.5-<8.0

Điểm >8.0

Trang 12

TL

%

SL

TL %

SL

TL %

SL

TL %

SL

TL %

* 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:

số

Điểm 0 –

2.0

Điểm

3.0-<5.0

Điểm

5.0-<6.5

Điểm

6.5-<8.0

Điểm >8.0

SL

TL

%

SL

TL %

SL

TL %

SL

TL %

SL

TL %

Võ Thị Dương

Trang 14

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

Trang 15

3 Cách thức tiến hành: 1

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

Ngày đăng: 30/06/2021, 09:42

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w