SKKN chuyên đề về số nguyên tố trong bồi dưỡng học sinh giỏi môn tin học

Ngày đăng: 11/11/2019, 12:24

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM lậpXÃ – Tự do-CHỦ Hạnh phúc VIỆT NAM CỘNGĐộc HÒA HỘI NGHĨA Độc lập – Tự do- Hạnh phúc ĐỀ TÀI: ĐỀ VỀ SỐ NGUYÊN TỐ TRONG ĐỀCHUYÊN TÀI: BỒI DƯỠNGPHÁP HỌCDẠY SINH GIỎI ÁP DỤNG PHƯƠNG HỌC THEO GĨC TRONG MƠN HĨA HỌC NHẰM PHÁT HUY TÍNH TÍCH CỰC HỌC TẬP CỦA HỌC SINH Họ tên: Dương Thùy Mai Chức viên Thị Hoa Lý Họ vàvụ: tên:Giáo Nguyễn Đơn công : Trường THPT Chứcvịvụ: Tổtác trưởng chuyên mônNinh Châu Đơn vị công tác : Trường THPT Ninh Châu Quảng Ninh, Ninh, tháng tháng 15 năm năm 2019 2018 Quảng CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự do- Hạnh phúc Độc lập – Tự do- Hạnh phúc ĐỀ TÀI: ĐỀ TÀI: ÁP DỤNG PHƯƠNG PHÁP DẠY HỌC GÓC CHUYÊN ĐỀ VỀ SỐ NGUYÊN TỐ THEO TRONG HỌC SINH GIỎI TRONG BỒI MƠNDƯỠNG HĨA HỌC NHẰM PHÁT HUY TÍNH TÍCH CỰC HỌC TẬP CỦA HỌC SINH Tháng / 2018 Tháng / 2019 MỤC LỤC PHẦN MỞ ĐẦU 1.1 Lí chọn đề tài 1.2 Điểm đề tài NỘI DUNG 2.1 Cơ sở lí luận 2.2 Thực trạng vấn đề 2.3 Nội dung giải pháp thực 2.3.1 Bài tốn gốc: “ Kiểm tra tính ngun tố số nguyên dương ” 2.3.2 Các dạng toán số nguyên tố Bài toán 1: Liệt kê số nguyên tố đoạn từ [2,N] Bài toán 2: Số siêu nguyên tố .8 Bài toán 3: Dãy số đặc biệt 12 Bài toán 4: Dãy tăng nguyên tố 14 Bài tốn 5: Phân tích số tích tổng số nguyên tố 17 Bài tốn 6: Phân tích thừa số ngun tố 19 Bài toán 7: Số nguyên tố mersen .23 Bài toán 8: Dãy nguyên tố 26 PHẦN KẾT LUẬN 29 3.1 Ý nghĩa, phạm vi áp dụng đề tài 29 3.2 Kiến nghị, đề xuất 29 TÀI LIỆU THAM KHẢO .30 PHẦN MỞ ĐẦU 1.1 Lí chọn đề tài Trong chương trình tin học lớp 11, học sinh tiếp cận với ngơn ngữ lập trình Pascal, loại ngơn ngữ thuộc nhóm ngơn ngữ lập trình bậc cao Đây ngôn ngữ chặt chẽ mặt cú pháp mà chặt chẽ mặt cấu trúc liệu Chính mà việc tiếp cận với ngơn ngữ lập trình Pascal hội để học sinh rèn luyện tính tư logic, làm việc giải vấn đề có tính hệ thống Trong q trình giảng dạy lớp, Giáo viên cần truyền cảm hứng tới học sinh để học sinh có đam mê, u thích mơn tin học để từ học sinh có nhu cầu tìm tòi học hỏi môn Trong công tác bồi dưỡng học sinh giỏi vậy, giáo viên có phương pháp bồi dưỡng riêng mình, hướng đến mục đích để học sinh dễ nắm bắt thuật toán nắm vững kiến thức để vận dụng vào giải tốn nâng cao Trong chương trình tin học lớp 10, tìm hiểu thuật tốn, làm quen với thuật toán kiểm tra số nguyên dương có phải số nguyên tố hay không Và Thầy, cô giáo nhận thấy dạng bồi dưỡng học sinh giỏi có nhiều tốn số nguyên tố Tuy nhiên, qua trình giảng dạy cho thấy, đa số em hiểu khái niệm số nguyên tố lại khó khăn việc xây dựng thuật tốn cho tốn này, chí em thuộc đối tượng bồi dưỡng học sinh giỏi đưa ý tưởng giải toán mà chưa tối ưu Vậy nên muốn học sinh thuộc đối tượng bồi dưỡng học sinh giỏi có tư tốt để giải dạng số nguyên tố giáo viên cần hướng cho học sinh có ý tưởng tốt nắm phương pháp giải tốn nhất, từ xâu chuổi dạng có liên quan với hay nói cách khác dạy từ đến nâng cao theo chuyên đề Xuất phát từ sở trên, qua trình bồi dưỡng học sinh giỏi nam xây dựng sáng kiến kinh nghiệm “Chuyên đề số nguyên tố bồi dưỡng học sinh giỏi môn tin học” 1.2 Điểm đề tài Trên sở nhận thức, tìm hiểu phân tích, sáng kiến đưa toán số nguyên tố để xây dựng thuật tốn chương trình giải tốn Qua q trình giảng dạy lớp, khảo sát học sinh cách kiểm tra số nguyên dương có phải số nguyên tố hay khơng đa số học sinh đưa ý tưởng cho toán Tuy nhiên ý tưởng cho thấy em hình thành tư giải tốn mà chưa quan tâm tới phạm vi giá trị liệu dùng toán đưa cách giải mà chưa tối ưu Chính xây dựng chương trình, em gặp phải số lỗi chương trình Đề tài góp phần thúc đẩy hướng phát huy tính tích cực học sinh, giúp học sinh có tư lập trình, nắm kiến thức giải toán theo chuyên đề, góp phần nâng cao kiến thức khả thực hành cho giáo viên, việc dạy học đặc biệt ôn thi học sinh giỏi Hiệu chất lượng dạy học phụ thuộc vào nhiều yếu tố Tuy nhiên việc giáo viên nhận thức vấn đề có sâu sắc, xác hay khơng, chuẩn bị kiến thức có chu đáo hay khơng có phương pháp kỹ thuật tốt để xử lý tốn đóng vai trò quan trọng Cách nhận thức, cách hiểu, phân tích đưa chương trình cụ thể mà tơi đưa sau đây, hy vọng góp phần nhỏ định hướng để đồng nghiệp rút kinh nghiệm nhiệm vụ giảng dạy tốt môn Tin học thực tốt việc ôn thi học sinh giỏi NỘI DUNG 2.1 Cơ sở lí luận Ngơn ngữ lập trình Pascal ngơn ngữ lập trình có cấu trúc, chặt chẽ mặt cú pháp mà chặt chẽ mặt liệu, tập ngôn ngữ máy tính Đây dạng ngơn ngữ chuẩn hóa Chính vậy, xây dựng chương trình ngôn ngữ cần phải tuân thủ vào nhớ cấu trúc liệu Thông thường dạng học sinh giỏi phạm vi giá trị liệu biến sử dụng chương trình số lượng biến sử dụng chương trình phức tạp, học sinh cần có phương pháp xử lý tốt để đảm bảo kết chạy chương trình Như vậy, việc đưa phương pháp kỹ thuật xử lý liệu lớn lập trình với Pascal để xử lý số toán phạm vị liệu vượt phạm vi Pascal, giúp cho học sinh giáo viên có hướng xử lý tốt học lập trình bồi dưỡng học sinh giỏi 2.2 Thực trạng vấn đề * Điều kiện môn Tin học: SGK Tin học 11 biên soạn với tinh thần truyền cho học sinh có tư lập trình Nhưng việc ơn thi học sinh giỏi cần cụ thể lập trình môi trường Pascal Free Pascal Như việc dạy học cho học sinh có chút khác biệt so với việc ôn thi học sinh giỏi * Điều kiện Nhà trường: Tình trạng chung trường THPT tỉnh nói riêng nước nói chung, trang thiết bị nhà trường nhiều thiếu thốn, thời gian ôn luyện học sinh giỏi chưa nhiều * Điều kiện giáo viên: Nhà trường có 03 giáo viên tin học đạt chuẩn, tuổi đời trẻ, có lực, ý thức học hỏi để nâng cao trình độ chun mơn thân chưa thực tích cực * Điều kiện học sinh: Hầu hết học sinh em nông thôn Nhưng kinh tế địa phương năm gần phát triển mạnh, dịch vụ Internet kinh doanh máy tính địa bàn phát triển nên học sinh nhiều tiếp cận máy tính Internet Mặt khác, môn học lại ứng dụng nhiều thực tế đời sống Vì vậy, học sinh hứng thú có ý thức với môn học nên nhiều tiết học em hăng say xây dựng tìm hiểu thực tế môn học Tuy nhiên, môn học khó đồng thời lại liên quan đến nhiều lĩnh vực khoa học tự nhiên, xã hội nên việc tiếp cận học sinh tương đối khó Kết học tập môn Tin học kết học sinh giỏi chưa cao Kết bồi dưỡng học sinh giỏi Năm học 2015-2016 có giải KK Năm học 2016-2017 có giải KK Năm học 2017-2018 có giải nhì, giải ba giải khuyến khích 2.3 Nội dung giải pháp thực Trước hết tơi đưa tốn sau: Bài tốn gốc: “ Kiểm tra tính ngun tố số nguyên dương ” Đây toán sách giáo khoa tin học lớp 10 mà học sinh tìm hiểu thuật tốn toán Ý tưởng: Một số nguyên dương N số nguyên tố có ước số khác Từ ta suy – Nếu N=1 N khơng số nguyên tố – Nếu 1 [ N ] thơng báo N ngun 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 Dưới ví dụ mơ việc thực thuật toán � Với N = 29 ( � � 29� 5) � Với N = 45 ( � � 45� ) I N/i 29/2 29/3 29/4 29/5 Chia hết không? Không Không Không Không a) 29 số nguyên tố I N/i 45/2 45/3 Chia hết không? Chia hết Không b) 45 không số nguyên tố Trên sở thuật toán ta tiến hành cài đặt thuật toán cho toán gốc sau: Chương trình : Function nt(N: longint): boolean; 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; Đây chương trình kiểm tra số nguyên dương có phải số nguyên tố ? 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ố nguyên tố Vậy tính chất số nguyên tố ? Tính chất số nguyên tố: Trừ số số số nguyên tố có dạng 6k 1 ( số có dạng 6k 2 chia hết cho 2, 6k  chia hết cho 3) Từ ta có chương trình con: Kiểm tra số nguyên dương có phải số nguyên tố ? áp dụng tính chất số nguyên tố sau: Chương trình 2: 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 od k =0) or (n mod (k+2) = 0) then break; until k>M if k>Mthen nt:=true else nt:=false; end; Như để giải toán số nguyên tố lập trình với liệu lớn ta theo hướng xây dựng chương trình cho tốn gốc với lựa chọn chương trình Với cách viết chương trình cho tốn gốc với chương trình dạng Ta sử dụng liệu với số nguyên dương N lớn không kiểu liệu longint mà thay vào liệu kiểu int64 cụ thể sau: function nt(N:int64):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 od k =0) or (n mod (k+2) = 0) then break; until k>M if k>Mthen nt:=true else nt:=false; end; 2.3.2 Các dạng toán số nguyên tố 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ệp văn nguyento.inp chứa số nguyên dương N Kết quả: Ghi vào tệp văn nguyento.out số nguyên tố, số cách kí tự trống Ghi dòng Ý tưởng tốn sau: -Xây dựng hàm nguyên tố – Xây dựng chương trình liệt kê số nguyên tố đoạn từ đến phần nguyê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 cụ thể với toán 1: const fi=’nguyento.inp’; fo=’nguyento.out’; var n,m, i:longint; f1,f2:text; procedure doctep; begin assign(f1,fi); reset(f1); assign(f2,fo); rewrite(f2); read(f1,n); end; function nt(n:int64):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 xuly; begin for i:=2 to n if nt(i) then write(f2,i,’ ‘); end; procedure dongtep; begin close(f1); close(f2); 10 Function nt(n:int64):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; Procedure dongtep; begin close(f1); close(f2); end; Procedure qhd; begin b[csmax]:=1; for i:=j downto begin csmax:=j+1; for t:=i+1 to j+1 if (a[t]>a[i])and(b[t]>b[csmax]) then csmax:=t; b[i]:=b[csmax]+1; c[i]:=csmax; end; write(f2,b[0]-2,’ ‘); i:=c[0]; while in+1 begin write(f2,a[i],’ ‘); 19 i:=c[i]; end; end; Procedure thaotac; begin j:=0; for i:=1 to n if kt(a[i]) then begin inc(j); d[j]:=a[i]; end; a[0]:=-32768; a[n+1]:=32767; qhd; end; Begin nhapdulieu; thaotac; dongtep; End Bài tốn 5: Phân tích số tích tổng số nguyên tố Cho trước số tự nhiên N lập trình phân tích N thành tích thừa số nguyên tố Dữ liệu: Vào File văn PTNT.INP chứa số N Kết quả: Ghi vào file văn PTNT.OUT tích thừa số nguyên tố PTNT.INP PTNT.OUT 18 2*3*3 Với dạng tốn ta sử dụng hàm nguyên tố không sử dụng hàm nguyên tố mà sử dụng tính chất số nguyên tố – Ý tưởng tốn: Xây dựng mơ đun chương trình phân tích số N thừa số nguyên tố cách khởi gán giá trị ban đâu i:=2; tiến hành kiểm tra (n mod i =0) thay đổi giá trị n:= n div i, đồng thời ghi giá trị i vào tệp Lưu ý ghi giá trị i vào tệp cần kiểm tra giá trị n Nếu n=1 write(f2,i) ngược lại ghi write(f2,i,’*’) Chương trình sau: 20 procedure thua_sont(n:integer); Var m:integer; Begin m:=trunc(sqrt(n)); i:=2; while i

– Xem thêm –

Xem thêm: SKKN chuyên đề về số nguyên tố trong bồi dưỡng học sinh giỏi môn tin học , , 2 Thực trạng của vấn đề