Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 19 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
19
Dung lượng
196,49 KB
Nội dung
MỤC LỤC TRANG MỞ ĐẦU 1.1 1.2 1.3 1.4 Lý chọn đề tài Mục đích nghiên cứu Đối tượng nghiên cứu .3 Phương pháp nghiên cứu NỘI DUNG CỦA SÁNG KIẾN KINH NGHIỆM 2.1 Cơ sở lý luận sáng kiến kinh nghiệm .3 2.2 Thực trạng vấn đề trước áp dụng sáng kiến kinh nghiệm 2.3 Các sáng kiến kinh nghiệm giải pháp sử dụng để giải vấn đề 2.3.1 Kiểm tra tính nguyên tố số nguyên dương …………… 2.3.2 Phân tích số thành tích thừa số nguyên tố ……… ……….6 2.3.3 Một số ví dụ…………………………………………………………7 2.4 Hiệu sáng kiến kinh nghiệm hoạt động giáo dục, với thân, đồng nghiệp nhà trường 17 KẾT LUẬN, KIẾN NGHỊ 17 Kết luận 17 Kiến nghị .17 1 MỞ ĐẦU 1.1 Lý chọn đề tài: Công nghệ thông tin nước ta phát triển đưa nhiều triển vọng cho tất ngành việc tin học hố xã hội Cơng nghệ tơng tin có ý nghĩa quan trọng nhiều lĩnh vực đời sống, máy tính khơng cịn xa lạ người Trong ngành giáo dục ngành đưa công nghệ thông tin vào ứng dụng việc dạy học Thực Nghị số 26/NQ-CP ngày 15/4/2015 Chính phủ ban hành Chương trình hành động thực Nghị số 36-NQ/TW ngày 01/7/2014 Bộ Chính trị Ban Chấp hành Trung ương Đảng Cộng sản Việt Nam đẩy mạnh ứng dụng, phát triển công nghệ thông tin (CNTT) đáp ứng yêu cầu phát triển bền vững hội nhập quốc tế; thực Quyết định số 1755/ QĐ-TTg ngày 22/9/2010 Thủ tướng Chính phủ phê duyệt Đề án “Đưa Việt Nam sớm trở thành nước mạnh công nghệ thông tin truyền thông”; thực Chỉ thị số 16/CT-TTg ngày 04/5/2017 Thủ tướng Chính phủ việc tăng cường lực tiếp cận Cách mạng công nghiệp lần thứ 4, Bộ Giáo dục Đào tạo hướng dẫn chế đặc thù đào tạo ngành thuộc lĩnh vực CNTT trình độ đại học giai đoạn 2017-2020 để đáp ứng nhu cầu thị trường lao động hội nhập quốc tế Học sinh THPT nguồn lao động trẻ sử dụng sau tốt nghiệp việc tiếp cận công nghệ thông tin từ nhà trường phổ thơng giúp cho học sinh tự tin công việc Việc đào tạo học sinh có tảng lập trình có đam mê lập trình có vai trị quan trọng phát triển sau em Thông qua việc dạy đội tuyển học sinh giỏi, dạy lớp mũi nhọn nhiều năm để học sinh yêu thích lập trình tơi rút kinh nghiệm sau: + Tạo đam mê lập trình đọc sách + Vận dụng kiến thức học để giải tốn thực tế + Hình thành phát triển tư logic + Hình thành bước để giải vấn đề nêu + Dạy học thông qua chuyên đề độc lập hay liên hệ toán học tin học để giải toán Trong trình dạy học sinh đứng đội tuyển học sinh giỏi tơi thấy nhiều tốn giả nhanh biết tính chất số áp dụng hợp lý Với lý tơi chọn đề tài “Tính ngun tố số nguyên sử dụng tính nguyên tố để giải số toán” 1.2 Mục đích nghiên cứu Đưa tính nguyên tố số nguyên, thuật toán liên quan đến số ngun tố Đưa số tốn có sử dụng tính nguyên tố số nguyên để giải Qua toán giúp học sinh yêu thích việc tư logic thấy kỳ diệu số 1.3 Đối tượng nghiên cứu Học sinh khối 11 đội tuyển học sinh giỏi trường THPT Nông Cống 1.4 Phương pháp nghiên cứu Phương pháp phân tích thuật tốn, kiểm tra đánh giá lực học sinh, phát triển tư logic Một số tài liệu tham khảo tìm kiếm thông tin internet Nội dung sáng kiến 2.1 Cơ sở lí luận sáng kiến kinh nghiệm - Nghị số 44/NQ-CP, ngày 09/6/2014 Ban hành chương trình hành động phủ thực nghị số 29-NQ/TW ngày 04/11/2013 Hội nghị lần thứ Ban chấp hành Trung ương khóa XI đổi bản, toàn diện giáo dục đào tạo, đáp ứng yêu cầu cơng nghiệp hóa điều kiện kinh tế thị trường định hướng xã hội chủ nghĩa hội nhập quốc tế xác định “Đổi hình thức, phương pháp thi, kiểm tra đánh giá kết giáo dục theo hướng đánh giá lực người học; kết hợp đánh giá trình với đánh giá cuối kỳ học, cuối năm học theo mơ hình nước có giáo dục phát triển” - Luật Giáo dục số 38/2005/QH11, Điều 28 quy định: “Phương pháp giáo dục phổ thơng phải phát huy tính tích cực, tự giác, chủ động, sáng tạo cảu học sinh; phù hợp với đặc điểm lớp học, môn học; bồi dưỡng phương pháp tự học, khả làm việc theo nhóm; rèn luyện kỹ kiến thức vào thực tiễn; tác động đến tình cảm, đem lại niềm vui, hứng thú học tập cho học sinh” + Ngoài việc tạo điều kiện cho học sinh chiếm lĩnh tri thức kỷ Tin học cần thiết, Tin học có tác dụng phát triển lực trí tuệ chung như: phân tích, tổng hợp, trừu tượng hố, khái qt hố…rèn luyện đức tính, phẩm chất người lao động Học sinh thấy rõ hiệu mạnh mẽ công nghệ thông tin nhận thức cần có 2.2 Thực trạng vấn đề trước áp dụng sáng kiến kinh nghiệm Sự quan trọng CNTT xã hội biết để quan tâm em học sinh, phụ huynh, nhà trường khó khăn Q trình thực đề tài trường THPT Nông Cống có số thuận lợi khó khăn sau: 2.2.1 Thuận lợi: * Nhà trường: - Ban giám hiệu nhà trường đạo điều kiện tốt để giáo viên học sinh học tập - Nhà trường đầu tư phịng thực hành tin với 24 máy tính xách tay em đam mê lập trình đội tuyển học sinh giỏi học tập - Được giúp đỡ, tạo điều kiện tổ nhóm chuyên mơn Tốn – Tin * Học sinh: Nhiều học sinh thấy tiềm phát triển ngành CNTT tương lai, qua có ý thức định hướng nghề CNTT 2.2.2 Khó khăn: * Nhà trường: Nhà trường tạo điều kiện tối đa nhiều lý nên sở vật chất để học tốt mơn tin học chưa đáp ứng nhu cầu học sinh * Giáo viên: Tài liệu mơn tin học nhà trường gây khó khăn cho việc nâng cao trình độ Đời sống giáo viên cịn nhiều khó khăn nên việc tập trung tối đa cho môn học bị ảnh hưởng * Học sinh: Lập trình có đặc trưng riêng so với môn học khác nên tiếp cận học sinh khó khăn Nhiều học sinh u thích đam mê lập trình điều kiện kinh tế gia đình chưa đủ để em chuyên tâm học tập Tư tưởng học để thi đại học nặng học sinh nên thời gian học dành cho đam mê môn tin học không đủ 2.3 Các sáng kiến kinh nghiệm giải pháp sử dụng để giải vấn đề Khái niệm số nguyên tố (prime number): Số nguyên tố số nguyên dương chia hết cho Từ suy số khơng phải số nguyên tố (có nhiều em học lập trình nhầm số số nguyên tố) Một kết khác không quan trọng rút số số nguyên tố (nhỏ nhất) số số nguyên tố chẵn 2.3.1 Kiểm tra tính nguyên tố số nguyên dương a Kiểm tra tính nguyên tố số nguyên dương Để kiểm tra số nguyên dương N có số nguyên tố hay khơng ta kiểm tra xem N có tồn số nguyên k cho k ước N hay khơng? Nếu tồn số ngun k N khơng phải số nguyên tố ngược lại N số nguyên tố Ta tìm số k cách lấy N chia cho số từ N-1 Nếu N khơng phải số ngun tố N phân tách N= k x k với ≤ k ≤ k 2< N−1 k ×k ≤ k × k 2=N nên k ≤ √ N Do ta cần kiểm tra k từ đến √ N mà khơng cần kiểm tra từ đến N-1 Ta có đoạn chương trình sau: function ngto(n:longint):boolean; var k :longint; begin if n=1 then exit(false); for k:=2 to trunc(sqrt(n)) if (n mod k=0) then exit(false); exit(true); end; Hàm ngto(n) kiểm tra nguyên đoạn [ 2, √ N ] để giảm thiểu số cần kiểm tra ta có nhận xét: Để kiểm tra số N số ngun tố hay khơng ta kiểm tra xem có tồn số nguyên tố k ( ≤ k ≤ √ N ) mà k ước N Nếu tồn k N khơng phải số ngun tố ngược lại N số nguyên tố Để tránh việc phải kiểm tra k có phải số ngun tố hay khơng ta dựa vào hai tính chất đơn giản số nguyên tố sau: Trừ số nguyên tố lẻ Trừ số 2, số nguyên tố có dạng k ± Do kiểm tra số N có phải số ngun tố hay khơng ta cần kiểm tra xem N có chia hết cho số 2, số số có dạng k ± khoảng [ 5, √ N ] Ta có đoạn chương trình sau: function ngto(n:longint):boolean; var k,sqrt_n:longint; begin if (n=2)or(n=3) then exit(true); if (n=1) or (n mod 2=0) or (n mod 3=0) then exit(false); sqrt_n:=trunc(sqrt(n)); k:=-1; repeat inc(k,6); if (n mod k=0)or(n mod (k+2)=0) then break; until k>sqrt_n; exit(k>sqrt_n); end; b Liệt kê số nguyên tố đoạn [ 1, N ] Ta dùng hàm ngto(n) để kiểm tra số đoạn [ 1, N ] Đoạn chương trình: For i := to N If ngto(i) then write(i); Cách cách đơn giản chạy chậm nên ta cải tiến cách sử dụng sàng nguyên tố Cách làm thực sau: Trước tiên xóa số khỏi tập số nguyên tố Số số số nguyên tố ta xóa tất số bội Số sau số khơng bị xóa số ta lại xóa tất số bội 3…thuật toán tiếp tục đến gặp số nguyên tố lớn √ N dừng lại Các số chưa bị xóa số nguyên tố Ta có đoạn chương trình sau: Const max=10000; Procedure sangngto(N:longint); Var i,j: longint A: array[1 max] of byte; Begin fillchar(a,sizeof(a),0); for i:=2 to trunc(sqrt(N)) if a[i]=0 then begin j:=i*i; while j1 biễu diễn dạng chuẩn tắc N= p 1k1 × p2k × … × p sks ki số nguyên dương pi số nguyên tố với p 1< p 2< …< ps Ta có tốn: Cho số nguyên dương N (20 then writeln(f2,j,'^',a[j]); Close(f1); Close(f2); END Khi N phân tích thành thừa số nguyên tố sau: N= p 1k1 × p2k × … × p sks Ta có kết luận sau: Số ước N là: ( k 1+1 ) × ( k 2+1 ) ×… ×(ks +1) Tổng ước số ¿ k2 ( p¿¿ 1¿¿ k 1−1) ( p −1) ( p¿¿ s¿¿ ks−1) × ×…× ¿¿¿¿ p 1−1 p2−1 p s−1 2.3.3 Một số ví dụ Dựa vào tính chất nguyên tố số nguyên dương việc phân tích số thành tích thừa số ngun tố tối có sơ tập sau: Bài toán 1: Số gần nguyên tố Chúng ta biết số nguyên tố số nguyên dương mà có ước phân biệt Mạnh ln thích đặc biệt mẻ, anh đưa định nghĩa “Số gần nguyên tố” – số nguyên dương mà có ước phân biệt Yêu cầu: Cho mảng có n phần tử, cho biết có phần tử mảng số gần nguyên tố Dữ liệu vào: Từ file văn BAI1.INP - Dòng đầu tiên: Số tự nhiên n (1 ≤ n ≤ 106) số phần tử mảng - Dòng tiếp theo: Gồm n số nguyên dương x[i] (1 ≤ x[i] ≤ 109) Dữ liệu ra: Ghi file văn BAI1.OUT: Số phần tử mảng số gần nguyên tố Ví dụ: BAI1.INP 456 BAI1.OUT Thuật tốn: Đối với toán duyệt để tìm ước X chậm không đủ thời gian theo yêu cầu Do ta thấy X mà phân tích thành tích thừa số nguyên tố X = p1k × p2k ×… × p sks tổng ước ( k 1+1 ) × ( k 2+1 ) ×… ×(ks +1) Theo đề số gần nguyên tố có ước X phân tích thành X = p12 Vậy X số gần nguyên tố X phải số phương Chương trình: var f1,f2:text; i,j,d,kq,n: longint; function ngto(k:longint):boolean; var j1:longint; kt:boolean; begin j1:=2;kt:=false; if k>1 then begin while (j1 sqrt(k) then kt:=true; end; ngto:=kt; end; begin assign(f1,'bai1.inp'); reset(f1); assign(f2,'bai1.out'); rewrite(f2); readln(f1,n);kq:=0; for j:=1 to n begin read(f1,i); d:=trunc(sqrt(i)); if (sqr(d)=i) and ngto(d) then inc(kq); end; write(f2,kq); close(f1); close(f2); end Bài tốn 2: Phân tích Phân tích N! thành tích thừa số nguyên tố Ví dụ: 15! = 211.36.53.72.11.13 Thuật tốn: Ta tìm cách phân tích n! thừa số nguyên tố Các ước số nguyên tố n! nằm phạm vi từ đến n, ta duyệt qua tất số nguyên tố phạm vi Với số nguyên tố p, số mũ biểu diễn nguyên tố n! công thức: ¿ n n n + + +… p p p [ ][ ][ ] Trong [n/p] ký hiệu phần ngun n/p, nói cách khác ngơn ngữ Pascal [n/p] n div p Công thức giải thích sau: [n/p] số lượng số từ đến n chia hết cho p, [n/p2] số lượng số từ đến n chia hết cho p2, số đóng góp thừa số nguyên tố p phân biệt cho n! Ví dụ, với N = 15, p = kí hiệu : phép chia nguyên, ta tính 15 : = 7; : = 3; : = 1; : = Do k = 7+3+1+0 = 11 Với N=15, p = ta tính 15 : = 3; : = Do k = 3+0 = Với N=15, p = ta tính 15 : = 2; :7 = Do k = 2+0 = Với N=15, p = 11 ta tính 15 : 11 = 1; : = Do k = 1+0 = Với N=15, p = 13 ta tính 15 : 13 = 1; : = Do k = 1+0 = Như 15! = 211.53.72.11.13 Chương trình: function ngto(n: longint): boolean; var i: longint; begin nguyento:=false; for i:=2 to trunc(sqrt(n)) if n mod i = then exit; ngto:=true; end; var n,i,j,a: longint; begin readln(n); for i:=2 to n if ngto(i) then begin a:=0; j:=i; while (j d5 hai số liên tiếp có số chẵn (chia hết cho 2), cịn năm số liên tiếp có số chia hết cho Việc cịn lại lấy tích k số cịn lại Vì tích khơng tận ta cần giữ lại chữ số cuối cách lấy mod 10 Để tính chữ số tận m với m = d2 – d5 > ta để ý đến tính tuần hồn nó, cụ thể ta cần tính chữ số tận 2(m mod 4) với trường hợp: m mod = 0, 1, Theo thí dụ ta có m mod = mod = 0, chữ số cuối 2m khơng phải m > Ta tính (những cặp gạch dưới) 15! = 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15 = = 1.2.3.(2.2).5.(2.3).7.(2.2.2).9.(2.5).11 (2.2.3).13.(2.7).(3.5) →(3.3.7.9.11.3.13.7.3) 28 mod 10 = = ((k mod 10) (28 mod 10)) mod 10 = (3.6) mod 10 = Chữ số cuối khác 15! Lưu ý (a.b) mod m=((a mod m).(b mod m)) mod m ta lấy mod bước trung gian với số lần tùy ý 15 Để tránh việc tràn số sử dụng biến dung lượng nhỏ kiểu word thay dùng longint tăng thêm phép tốn mod Chẳng hạn, tích luỹ kết quả, thay viết k := (k*c) mod 10; ta nên viết k := (k*(c mod 10)) mod 10; Chương trình: function find(n: longint): longint; var m: longint; {m – hieu so cac thua so thua so 5} i,k,c: longint; begin {k – ket qua trung gian} k := 1; m := 0; find := k; if (n