Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 52 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
52
Dung lượng
358 KB
Nội dung
ĐẶT VẤN ĐỀ Lý chọn đề tài Số nguyên tố vấn đề trung tâm số học Trong thực tế, thuật toán số học ứng dụng vào việc giải nhiều tốn Một thuật tốn thuật toán số nguyên tố Đây thuật toán sử dụng nhiều kỳ thi học sinh giỏi Tin học Do đó, việc giảng dạy để em nắm thuật toán việc vận dụng thuật tốn để giải tốn cụ thể điều quan trọng, sở để em học tốt phần tin học lập trình đạt kết cao học tập kỳ thi HSG Với kinh nghiệm nhiều năm giảng dạy tham gia bồi dưỡng học sinh giỏi viết sáng kiến kinh nghiệm với đề tài “Vận dụng thuật toán số nguyên tố để giải toán” Nội dung đề tài kiến thức thuật toán số nguyên tố việc vận dụng thuật tốn giải tốn Tơi hy vọng sáng kiến kinh nghiệm tài liệu tham khảo tốt cho giáo viên em học sinh giảng dạy bồi dưỡng học sinh giỏi Rất mong góp ý từ đồng nghiệp Cấu trúc nội dung I Các thuật toán số nguyên tố Thuật tốn kiểm tra tính ngun tố Thuật tốn Sàng nguyên tố Eratosthenes Phân tích số thừa số nguyên tố II Bài tập vận dụng Dạng 1: Kiểm tra tính nguyên tố Dạng 2: Sử dụng thuật tốn sàng ngun tố Dạng 3: Phân tích thành số nguyên tố Mục đích nghiên cứu Trong trình nghiên cứu giảng dạy, tơi nhận thấy việc vận dụng thuật toán số nguyên tố vào việc giải số tốn hiệu Vì vậy, tơi viết đề tài với mục đích: - Thứ nhất, trao đổi với đồng nghiệp việc vận dụng thuật số nguyên tố vào việc giải số toán - Thứ hai, tài liệu cho giáo viên phục vụ giảng dạy, bồi dưỡng học sinh giỏi Phương pháp nghiên cứu Kinh nghiệm thân, thảo luận, sưu tầm tài liệu, thử nghiệm thực tế, rút kinh nghiệm từ tiết dạy lớp Giới hạn phạm vi nghiên cứu đề tài Đề tài chủ yếu nghiên cứu vận dụng thuật tốn ứng dụng rộng rãi tìm kiếm tìm kiếm nhị phân, xếp lựa chọn (Selection Sort) xếp nhanh (Quick Sort) Đề tài có khả áp dụng rộng rãi vào giảng dạy, bồi dưỡng học sinh giỏi Tin học cho giáo viên học sinh THCS, THPT địa bàn toàn tỉnh Nghệ An NỘI DUNG Việc nắm vững thuật toán số nguyên tố điều quan trọng, sở để em học sinh vận dụng giải tốn cụ thể Sau đây, tơi xin trình bày kiến thức thuật toán số nguyên tố ứng dụng rộng rãi hệ thống tập mà tơi tìm hiểu vận dụng có hiệu q trình giảng dạy I CÁC THUẬT TỐN VỀ SỐ NGUN TỐ 1.1 Thuật tốn kiểm tra tính ngun tố Ta có thuật tốn kiểm tra tính ngun tố số n, chạy thời 1/2 gian O(n ): Function isprime (n:integer):boolean; Begin if n10), in hình số nguyên tố khoảng từ đến N Hướng dẫn: Nhận xét: Học sinh áp dụng thuật toán kiểm tra tính nguyên tố số để giải tốn Ta cần dùng thêm vòng lặp chạy từ đến N đặt ngồi vòng lặp kiểm tra số nguyên tố Chương trình: Var i,k,n:integer; nt:boolean; begin write('N = ');readln(n); For k:=1 to N begin nt:=true; if Kdmax then begin dmax:=d[a[i]]; res:=a[i]; end; writeln(f,ntmax); writeln(f,res); close(f); end Bài BEAUTY Một số gọi đẹp tổng bình phương chữ số (trong dạng biểu diễn thập phân) số nguyên tố Ví dụ, 12 số đẹp 12 + 22 = số nguyên tố Các số đẹp đánh số theo thứ tự tăng dần giá trị, trở Yêu cầu: Cho số nguyên N (1 ≤ N ≤ 106) Hãy tìm số đẹp thứ N Dữ liệu: Vào từ file BEAUTY.INP Gồm nhiều tests, test cho dòng chứa số nguyên N Kết quả: Ghi file BEAUTY.OUT Mỗi test đưa dòng kết số đẹp tìm tương ứng test từ file liệu vào Ví dụ: BEAUTY.INP BEAUTY.OUT 11 23 Hướng dẫn: Bài yêu cầu tính tổng chữ số sau kiểm tra xem tổng có phải số ngun tố khơng Chương trình: const fi='beauty.inp'; fo='beauty.out'; var f:text; a,b:array[1 2000000] of longint; c:array[1 810] of boolean; i,j,n,s,max:longint; procedure docf; begin assign(f,fi); reset(f); n:=0; while not eof(f) begin inc(n); readln(f,a[n]); end; close(f); end; 10 Procedure Sang; var i,j:longint; begin for i:=1 to n nt[i]:=true; nt[1]:=false; d:=0; for i:=2 to n if nt[i] then begin inc(d); P[d]:=i; for j:=2 to n div i nt[i*j]:=false; end; end; FUNCTION mu(a,x:longint):int64; var t:int64; begin if x=1 then exit(a); t:=mu(a, x div 2); t:=(t*t) mod k; if x mod 0 then t:=(t*a) mod k; exit(t); end; procedure xuly; var s,tg,i:longint; begin for i:=1 to d begin tg:=p[i]; s:=0; while tg0 then kq:=(kq*mu(p[i],a[i])) mod k; end; end; procedure ghi; begin assign(f,fo); rewrite(f); writeln(f,kq); close(f); end; begin doc; sang; xuly; ghi; end 39 Dạng 3: Phân tích thành số nguyên tố Bài Phân tích Cho số tự nhiên ≤ n ≤ 105 Hãy phân tích n! tích thừa số nguyên tố theo trật tự tăng dần Thí dụ, 4! = 23.31 Dữ liệu vào từ tệp văn PHANTICH.INP có dòng chứa số tự nhiên n Kết ghi tệp văn PHANTICH.OUT gồm dòng, dòng ghi thừa số nguyên tố tiếp đến số mũ tương ứng Các số dòng cách qua dấu cách PHANTICH.INP PHANTICH.OUT 23 31 Chương trình: const fi='PHANTICH.INP'; fo='PHANTICH.OUT'; var n, dem, k:longint; p, x: array[1 100000] of int64; procedure readfile; var f:text; begin assign(f,fi); reset(f); readln(f,n); close(f); end; function nt(n: longint):boolean; var i: integer; begin if n=1 then exit(false); if n=p begin inc(tam,n div p); n:=n div p; end; sk:=tam; end; procedure xuly; var i, y: longint; begin for i:=2 to n if nt(i) then begin inc(dem); p[dem]:=i; x[dem]:=sk(n,i); end; end; procedure inkq; var f:text; i:integer; begin assign(f,fo); rewrite(f); for i:=1 to dem writeln(f,p[i],' ',x[i]); close(f); 41 end; BEGIN readfile; xuly; inkq; END Bài Biểu diễn số Cho số nguyên k, tìm cách biểu diễn k thành tổng số nguyên tố đôi khác Dữ liệu : Vào từ file văn PRIME.INP chứa số k (15