Bồi dưỡng kĩ năng giải bài tập về số nguyên tố dành cho học sinh lớp 11 trường Trung học phổ thông Tĩnh Gia 2 1 A PHẦN MỞ ĐẦU I Lí do chọn đề tài Hiện nay trong lí luận dạy học nói chung và lí luận dạ[.]
A PHẦN MỞ ĐẦU I Lí chọn đề tài Hiện lí luận dạy học nói chung lí luận dạy học mơn tin học nói riêng đề cập nhiều phương pháp kỹ thuật dạy học: phương pháp thảo luận, phương pháp đặt câu hỏi, phương pháp chia nhóm … Các cách thiết kế giảng nhằm mục đích áp dụng phương pháp bồi dưỡng cho học sinh lực ham muốn học hỏi, tư sáng tạo, lực tự giải vấn đề, rèn luyện phát triển lực tự học sáng tạo, nghiên cứu, nghĩ làm việc cách tự chủ… Đồng thời để thích ứng với phát triển tư học sinh xã hội tiếp cận với công nghệ tiên tiến xã hội, giới Bên cạnh đó, kỹ thuật dạy học mới, vai trị người thầy có thay đổi là: “hướng dẫn học sinh biết tự tìm hướng giải vấn đề nảy sinh trình học tập, biết cách làm việc độc lập, làm việc tập thể Thầy người định hướng, người cố vấn giúp học sinh tự đánh giá, giúp học sinh ln đường tìm hiểu, lĩnh hội kiến thức…” Xuất phát từ thực tiễn giảng dạy trường THPT Tĩnh Gia thấy rằng, để đạt hiệu cao phần học, tiết học cần có cách thiết kế giảng cho phù hợp với nội dung kiến thức; phương pháp, phương tiện dạy học phải phù hợp với đối tượng học sinh Để qua phần học, tiết học học sinh thích thú với kiến thức mới, qua hiểu kiến thức học lớp, đồng thời học sinh thấy tầm quan trọng vấn đề việc ứng dụng kiến thức trước hết để đáp ứng yêu cầu mơn học, sau việc ứng dụng vào cơng việc thực tiễn đời sống xã hội Trong thời đại thông tin bùng nổ ngày nay, việc lập chương trình tự hoạt động cho máy tính, máy gia dụng cần thiết Và để làm việc cần có trình nghiên cứu, học tập ngơn ngữ lập trình lâu dài, qua nhà lập trình chọn ngơn ngữ lập trình thích hợp Tuy nhiên thứ điều có điểm khởi đầu nó, với học sinh việc học Pascal khởi đầu cho việc SangKienKinhNghiem.net tiếp cận ngơn ngữ lập trình bậc cao, qua giúp em hình dung đời, cấu tạo, hoạt động lợi ích chương trình hoạt động máy tính, máy tự động…Qua giúp em có thêm định hướng, niềm đam mê tin học, nghề nghiệp mà em chọn sau Đồng thời Pascal ngơn ngữ có cấu trúc thể yếu tố: Cấu trúc mặt liệu, cấu trúc mặt lệnh, cấu trúc mặt chương trình Trong q trình dạy đội tuyển học sinh giỏi tỉnh, tơi nhận thấy chương trình phổ thơng dạng toán số nguyên tố xuất với tần suất cao Ngay từ lớp 10 tìm hiểu thuật toán học sinh làm quen thuật toán số nguyên tố Tuy nhiên lớp 10 tìm hiểu sơ số nguyên tố Khi bồi dưỡng đội tuyển học sinh giỏi giáo viên học sinh cần sâu vào chuyên đề dạng tốn biến hóa khác Xuất phát từ sở chọn Đề tài “Bồi dưỡng kĩ giải tập số nguyên tố dành cho học sinh lớp 11 trường Trung học phổ thơng Tĩnh Gia 2” II Mục đích đề tài Từ thuật toán SGK tin học 10 số 4: “Bài toán thuật toán” phát triển sâu chuyên đề “Bồi dưỡng kĩ giải tập số nguyên tố dành cho học sinh lớp 11 trường Trung học phổ thông Tĩnh Gia 2” giảng dạy học sinh phổ thông đặc biệt dùng bồi dưỡng học sinh giỏi nhằm hướng dẫn học sinh giải toán dạng số nguyên tố III Nhiệm vụ đề tài Phát triển sâu chuyên đề số nguyên tố thông qua thuật toán sách giáo khoa lớp 10 11 để giải tốn: Kiểm tra tính ngun tố số nguyên N IV Đối tượng nghiên cứu Học sinh khối 11 đặc biệt học sinh tham gia bồi dưỡng học sinh giỏi trường tỉnh trường THPT Tĩnh Gia V Phương pháp nghiên cứu SangKienKinhNghiem.net - Kết hợp thực tiễn giáo dục trường THPT Tĩnh Gia - Có tham khảo tài liệu ngơn ngữ lập trình Pascal, số đề thi HSG trường tỉnh tài liệu sáng kiến kinh nghiệm B NỘI DUNG I Thực trạng vấn đề Tôi giáo viên thường nhà trường phân công dạy lớp chọn đứng đội tuyển thi học sinh giỏi tỉnh, trình giảng dạy thực tế gặp phải giải tốn lập trình ngơn ngữ pascal với ví dụ sách giáo khoa em dễ giải Tuy nhiên đưa toán với độ phức tạp cao học sinh khó giải Vấn đề đặt từ toán toán sách giáo khoa hướng dẫn cho học sinh giải với nhiều cách giải khác sở cách giải để vận dụng giải toán phức tạp Trải qua trình dạy học nhiều năm bồi dưỡng học sinh giỏi đúc rút kinh nghiệm giải toán phức tạp cần chia nhỏ tốn thành mơ đun, mơ đun chương trình giải việc đó, đồng thời biết phân luồng dạng toán tương ứng với mảng để học sinh dễ giải II Biện pháp thực Để giải vấn đề thực qua bước chính: Bước 1: giúp học sinh hiểu rõ nội dung lí thuyết số nguyên tố làm kiến thức tảng để giải dạng tập vận dụng Bước 2: giảng dạy giúp học sinh nhận biết, lập trình để giải dạng tập vận dụng Sau tơi xin trình bày cách thực bước trên: II.1 Nội dung lí thuyết số nguyên tố Trong tin học lớp 10 học sinh làm quen với số thuật toán có thuật tốn “ Kiểm tra tính ngun tố số nguyên dương ” SangKienKinhNghiem.net Như nhận thấy thuật toán số nguyên tố thuật toán thường gặp toán Nhất bồi dưỡng học sinh giỏi lại thấy tốn số ngun tố vận dụng nhiều toán khó Ý tưởng: Ta nhớ lại định nghĩa: Một số nguyên dương N số nguyên tố có ước số khác Từ định nghĩa ta suy - Nếu N=1 N khơng số ngun tố - Nếu 1 [ N ]thì thơng báo N nguyên tố kết thúc; Bước 6: Nếu N chia hết cho i thơng báo N khơng ngun tố kết thúc; Bước 7: i i + quay lại bước SangKienKinhNghiem.net Ghi BiÕn i nhận giá trị nguyên thay đổi phạm vi từ đến N + dùng ®Ó kiÓm tra N cã chia hÕt cho i hay không b, S Nhập N Đúng N=1? Sai Đúng N N ? Sai Sai ii+1 N chia hÕt cho i ? Đúng Thông báo N không số NT kÕt thóc Mơ ví dụ để thực thuật toán Với N = 29 ( 29 ) Với N = 45 ( 45 ) I N/i 29/2 29/3 29/4 29/5 Không Không Không Không a) 29 số nguyên tố I N/i 45/2 45/3 không Chia hết b) 45 không số nguyên tố Trên sở thuật toán tiến hành cài đặt thuật tốn sau: Viết mơ đun chương trình Function nt(n: longint): boolean; SangKienKinhNghiem.net Var k, M: integer; Begin If N=1 then begin nt:= false; exit end; If (N=2) or (N=3) then begin nt:=true; exit end; M:=trunc(sqrt(N)); For k:= to m If ( N mod k =0) then begin nt:=false; exit ; end; nt:=true; end; Hàm nt(N) tiến hành kiểm tra số nguyên k đoạn từ đến phần nguyên bậc N Để cải tiến cần giảm thiểu số số cần kiểm tra Thay kiểm tra số k ta kiểm tra số k có tính chất giống tính chất số ngun tố Tính chất số nguyên tố: Trừ số số số nguyên tố có dạng 6k ( số có dạng 6k chia hết cho 2, 6k chia hết cho 3) Ta có mơ đun chương trình sau function nt(n:longint):boolean; var k,m,i:longint; begin if (n=2) or (n=3) then begin nt:=true; exit; end; if( (n=1) or (n mod 2=0) or (n mod =0)then begin nt:=false; exit; end; k:=-1; m:=trunc(sqrt(n)); repeat inc(k,6); if (n mod k =0) or (n mod (k+2) = 0) then break; until k>m; if k>m then nt:=true else nt:=false; end; SangKienKinhNghiem.net Áp dụng chương trình để giải dạng tốn số nguyên tố II.2 Một số dạng toán số nguyên tố Dạng 1: Liệt kê số nguyên tố đoạn từ [2,N] Cụ thể: Bài tốn 1: Viết chương trình liệt kê số ngun tố đoạn từ [2,N] Dữ liệu : Vào từ tệp nguyento.inp số nguyên N Kết quả: Ghi tệp nguyento.out chứa số nguyên tố, số cách kí tự cách Ghi dịng Ý tưởng toán sau: -Xây dựng hàm kiểm tra số tính nguyên tố số nguyên N - Xây dựng chương trình liệt kê số nguyên tố đoạn từ đến N Bằng cách sử dụng lời gọi hàm nt(i) Nếu hàm nt(i) (trong i nhận giá trị từ đến N) hàm nhận giá trị giá trị i ghi vào tệp write(f2, i,’ ‘) Thơng qua đoạn chương trình: For i:=2 to N If nt(i) then write(f2, i, ‘ ‘); Chương trình hồn thiện sau const fi='nguyento.inp'; fo='nguyento.out'; var n,m, i:longint; f1,f2:text; procedure doctep; begin assign(f1,fi); reset(f1); read(f1,n); assign(f2,fo); rewrite(f2); end; SangKienKinhNghiem.net function nt(n:longint):boolean; var k, M:longint; begin if n=1 then begin nt:=false; exit ; end; if (n=2) or (n=3) then begin nt:=true; exit; end; M:=trunc(sqrt(n)); for k:=2 to M if n mod k=0 then begin nt:=false; exit; end; nt:=true; end; procedure xulytep; begin for i:=2 to n if nt(i) then write(f2,i,' '); end; procedure dongtep; begin close(f1); close(f2); end; begin doctep; xulytep; dongtep; end Đây dạng tập số nguyên tố đơn nhiên liệu lớn, ta cần giải tốn với mơ đun chương trình số nguyên tố thuật tốn thứ dựa vào tính chất số nguyên tố Cũng ý tưởng xây dựng hàm ngun tơ nt(N) dựa vào tính chất chương trình chạy nhanh nhiều SangKienKinhNghiem.net Ta có chương trình hồn thiện sau: const fi='nguyento.inp'; fo='nguyento.out'; var n,m, i:longint; f1,f2:text; procedure doctep; begin assign(f1,fi); reset(f1); read(f1,n); assign(f2,fo); rewrite(f2); end; function nt(n:longint):boolean; var k, M:longint; begin if (n=2) or (n=3) then begin nt:=true; exit; end; if (n=1) or (n mod 2=0) or (n mod 3=0) then begin nt:=false; exit ; end; M:=trunc(sqrt(n)); K:=-1; Repeat Inc(k,6); if (n mod k=0) or (n mod (k+2)=0) then begin break; until k>M; if k>m then nt:=true else nt:=false; end; procedure xulytep; begin for i:=2 to n if nt(i) then write(f2,i,' '); SangKienKinhNghiem.net end; procedure dongtep; begin close(f1); close(f2); end; begin doctep; xulytep; dongtep; end Dạng thứ 2: Số siêu nguyên tố Số siêu nguyên tố số nguyên tố mà bỏ số tùy ý chữ số bên phải phần lại tạo thành số nguyên tố Ví dụ: 37337 số siêu ngun tố có chữ số 3733,373,37,3 số nguyên tố Bài tốn 2:Hãy viết chương trình đọc liệu vào số nguyên N (0m then nt:=true else nt:=false; end; function snt(i:longint):boolean; begin snt:=false; repeat if nt(i)=false then exit else i:= i div 10; until i=0; 13 SangKienKinhNghiem.net snt:=true; end; procedure xulytep; var gtd,gtc:longint; dem:integer; begin gtd:=1; gtc:=1; dem:=0; for i:=1 to n-1 gtd:=gtd*10; gtc:=gtd*10; dec(gtc); for i:=gtd to gtc if snt(i) then begin write(f2,i,' '); inc(dem); end; writeln(f2); write(f2, 'co ',dem,'so sieu nguyen to'); end; procedure dongtep; begin close(f1); close(f2); end; begin doctep; xulytep; dongtep; end 14 SangKienKinhNghiem.net Dạng 3: Tính chất dãy số Bài tốn 3: Dãy số đặc biệt Dãy số A1,A2, ,An gọi dãy số đặc biệt thỏa mãn điều kiện sau - Là dãy số giảm dần - Với A A’ số nguyên tố ước số từ A1 đến Ai-1 Em tìm dãy số đặc biệt dài N Dữ liệu vào: Từ File văn DAYSO.INP số nguyên dương N (Nm; if k>m then nt:=true else nt:=false; end; procedure ghitep; begin write(f2,n,' '); for j:=n-1 downto if (N mod j =0) or (nt(j)) then write(f2,j,' '); 16 SangKienKinhNghiem.net end; procedure dongtep; begin close(f1); close(f2); end; begin doctep; ghitep; dongtep; end Bài toán 4: Dãy tăng nguyên tố Cho dãy N số nguyên dương Dãy tăng nguyên tố M phần tử dãy số có dạng: Ai1 Ai2 Ai3 … Aim Và thỏa điều kiện i)