Skkn áp dụng phương pháp sàng eratosthene vào giải các bài toán về số nguyên tố trong ngôn ngữ lập trình c++

47 2 0
Skkn áp dụng phương pháp sàng eratosthene vào giải các bài toán về số nguyên tố trong ngôn ngữ lập trình c++

Đ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

SỞ GIÁO DỤC VÀ ĐÀO TẠO NGHỆ AN TRƯỜNG THPT NAM ĐÀN SÁNG KIẾN KINH NGHIỆM “ÁP DỤNG PHƯƠNG PHÁP SÀNG ERATOSTHENE VÀO GIẢI CÁC BÀI TOÁN VỀ SỐ NGUN TỐ TRONG NGƠN NGỮ LẬP TRÌNH C++” MƠN: TIN HỌC Tác giả: Tổ: Điện thoại: Bùi Thị Hồng Tự nhiên 0396036370 Năm học: 2021-2022 skkn MỤC LỤC TT Nội dung Trang PHẦN PHẦN MỞ ĐẦU Lý chọn đề tài Mục tiêu đề tài 3 Nhiệm vụ đề tài 4 Đối tượng phương pháp nghiên cứu Tính đổi đóng góp đề tài NỘI DUNG NGHIÊN CỨU Cơ sở lý luận Thực trạng vấn đề Nội dung giải pháp thực Các toán áp dụng Bài toán 1: Liệt kê số nguyên tố Bài tốn 2: Tìm số 11 Bài tốn 3: Khóa số 14 Bài tốn 4: Tìm số Fibonacci ngun tố 16 Bài tốn 5: Vịng số ngun tố 18 Bài toán 6: Dãy số đặc biệt 20 Bài toán 7: Biểu diễn số 22 Bài toán 8: Dãy nguyên tố 25 Bài toán 9: Siêu nguyên tố 27 Bài tốn 10: Phân tích thừa số ngun tố 29 Bài toán 11: Số nguyên tố Mersen 31 Bài toán 12: Beauty 34 Bài toán 13: Số nguyên tố đối xứng 36 PHẦN skkn Bài toán 14: Dãy tăng nguyên tố 39 Một số kết đạt 41 Đóng góp đề tài 44 KẾT LUẬN 45 Quá trình nghiên cứu 45 Ý nghĩa, tác dụng đề tài 45 Kiến nghị đề xuất 45 TÀI TIỆU THAM KHẢO 46 PHẦN skkn PHẦN I ĐẶT VẤN ĐỀ Lý chọn đề tài Khoa học phát triển, công nghệ cải tiến hàng ngày góp phần lớn thúc đẩy xã hội đại Bởi vậy, Giáo dục phải thay đổi nhằm đáp ứng yêu cầu cấp thiết 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ó q 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 Mọi thứ có điểm khởi đầu nó, với học sinh việc học Pascal bắt đầu cho việc 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 ích lợi chương trình hoạt động máy tính, máy tự động Tuy nhiên để phát huy tốt tiềm năng, khả sáng tạo cá nhân dạy học cần có thay đổi, cải tiến giáo dục, định hướng cho em ngơn ngữ lập trình Hiện có nhiều ngơn ngữ lập trình tạo nhằm phục vụ cho nhiều mục đích khác Những ngơn ngữ lập trình ln đem lại đặc điểm, tính phù hợp cho nhu cầu, vấn đề đại Nhưng có ngơn ngữ lập trình xuất từ lâu phát triển mạnh mẽ đến ngơn ngữ lập trình C++ C++ có hiệu suất cao khả tiêu tốn tài ngun phần cứng khiến chương trình chạy nhanh Chính tơi định hướng cho học sinh chuyển sang học ngôn ngữ để lập trình giải tốn Các tốn “Số nguyên tố” để lại vấn đề mẻ cho người đọc Trong tốn hóc búa, thú vị hầu hết toán số nguyên tố Từ trước cơng ngun, Ơclít khẳng định số nguyên tố phạm trù số học Thực tế chứng minh, toán học dù phát triển đến đâu vai trị số ngun tố khơng thay đổi Nó vùng đất kì lạ dù bao năm qua có nhiều người thám hiểm Do tránh khỏi tượng em học sinh lo sợ gặp tốn số ngun tố, đa phần em khơng định hình phương pháp giải Đây lý mà chọn nghiên cứu đề tài: Phương pháp giải toán “Số nguyên tố ” ngơn ngữ lập trình C++ Tơi giáo viên chập chững bước vào công việc nghiên cứu khoa học, với tài liệu với hiểu biết nhỏ bé trình bồi dưỡng học sinh giỏi tỉnh mong đề tài khơng nhàm chán mà hữu ích phần nhỏ việc giải toán dể dàng, linh hoạt, đắn Mục tiêu đề tài + Với giáo viên:  Hỗ trợ giáo viên lập trình giải tốn số ngun tố cách nhanh chóng xác  Phục vụ việc bồi dưỡng HSG + Với học sinh skkn  Học sinh thấy liên kết môn học, thấy ứng dụng lý thuyết Tốn học ngơn ngữ lập trình Tin học vào thực tiễn Học sinh tiếp cận với tri thức nhiều lĩnh vực, đem lại nhiều điều mẻ hứng thú học tập  Giúp ơn thi HSG  Tìm hiểu lí thuyết chung số nguyên tố để bổ sung thêm số kiến thức giúp cho việc cho việc giải toán phần Hướng cho học sinh phương pháp giải toán sở giải tốn với hình thức biến tướng Nhiệm vụ đề tài Giúp học sinh thấy gần gũi Toán học với Tin học lập trình, từ thấy u thích cách tư logic mơn Đề tài giới thiệu phương pháp Sàng số nguyên tố phát triển chuyên sâu vào chuyên đề bồi dưỡng học sinh giỏi Đối tượng Phương pháp nghiên cứu - Học sinh giỏi trường THPT bước vào học môn Tin học lập trình, thi học sinh giỏi trường, từ phát triển làm tốt toán kỳ thi học sinh giỏi Tỉnh bậc trung học phổ thông - Nghiên cứu, khảo sát thực trạng, nhu cầu học sinh mơn học lập trình - Nghiên cứu thực tiễn công tác tổ chức hoạt động dạy học nhà trường văn hướng dẫn thực chương trình dạy học - Tìm hiểu tâm lý học lứa tuổi gắn liền với nhiệm vụ dạy học - Tổ chức khảo sát: khảo sát đánh giá mức độ đáp ứng yêu cầu hoạt động giáo dục - Tham khảo ý kiến đồng nghiệp cốt cán đầu ngành lĩnh vực giáo dục CNTT Tham khảo tài liệu sáng kiến kinh nghiệm số liệu liên quan - Tham khảo tài liệu, nghiên cứu đề thi, toán thiên tư toán học chuyển tốn lập trình, - Có tham khảo tài liệu ngơn ngữ lập trình C++, số đề thi HSG trường tỉnh tài lệu sáng kiến kinh nghiệm Tính đóng góp đề tài Việc chuyển đổi từ ngơn ngữ lập trình Pascal sang ngơn ngữ lập trình C++ trường THPT nâng cao hiệu hoạt động giáo dục, đáp ứng yêu cầu đổi giáo dục nhằm đẩy mạnh ứng dụng CNTT vào hỗ trợ đổi nội dung, phương pháp dạy học góp phần đổi tồn diện đáp ứng yêu cầu cách mạng Công nghiệp đưa Việt Nam trở thành quốc gia Công skkn nghiệp hóa, đại hóa Đề tài giới thiệu phương pháp Sàng số ngun tố, thuật tốn tìm số ngyên tố khoảng định, hướng học sịnh giải toán số nguyên tố dể dàng, linh hoạt, đắn hiệu Đề tài áp dụng trường THPT Nam Đàn có đóng góp sau: Giúp học sinh u thích mơn học lập trình, nắm phương pháp giải toán số nguyên tố sở giải tốn với hình thức biến tướng Từ đó, giúp việc học trở nên đơn giản hiệu Giúp giáo viên không nắm kiến thức dạy mà cịn khơng ngừng nâng cao lực CNTT Phù hợp với tình hình thực tế skkn PHẦN II NỘI DUNG NGHIÊN CỨU Cơ sở lý luận Khi tiếp cận với kiến thức lập trình mơn tin học, vấn đề quan trọng giáo viên phải truyền cho học sinh niềm đam mê dạy cho học sinh cách tư logic Các toán “Số nguyên tố” để lại vấn đề mẻ cho học sinh Trong chuyên đề muốn giới thiệu phương pháp Sàng Ơ-ra-tô-xten, phương pháp tìm tất số nguyên tố giới hạn phát triển chuyên sâu chuyên đề Từ để vận dụng giải toán mở rộng phức tạp Thực trạng vấn đề Trường THPT Nam đàn trường vùng nông thôn nằm chân đê dải Sơng Lam nên đa số học sinh chưa có hội, điều kiện tiếp xúc với công nghệ máy tính Vì vậy, tin học mơn học tương đối lạ lẫm khó học sinh trường tơi Đặc biệt chương trình tin học lập trình, với em học lập trình cịn khó học tốn, lí, hóa, điều kiện sở vật chất trường cịn nhiều khó khăn, học sinh học khóa lớp nhà lại khơng có máy tính để thực hành Điều dẫn đến ý thức tự giác học sinh chưa cao, đặc biệt em học để thi học sinh giỏi lại khó Với đội tuyển học sinh giỏi, hầu hết em chưa có kiến thức liên quan đến lập trình, gia đình chưa có máy tính để em thực hành Vì giáo viên dạy đội tuyển phải bắt đầu rèn luyện cho em từ câu lệnh Trải qua trình dạy học bồi dưỡng học sinh giỏi Tô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 Để đáp ứng đổi thời đại 4.0 định hướng cho học sinh chuyển sang ngơn ngữ lập trình C++ thay đổi cho ngơn ngữ lập trình truyền thống pascal Cơ sở giúp áp dụng đề tài: “Áp dụng phương pháp sàng Ơ-ra-tơ-xten vào giải tốn số nguyên tố lập trình C++ “ chuyên sâu chuyên đề để giải toán bản, tốn khó Thực trạng việc bồi dưỡng học sinh giỏi ngơn ngữ lập trình C++ trường phổ thông Nam Đàn thời gian qua: Năm học 2020-2021 làm điều tra nhỏ với trường THPT địa bàn huyện Nam Đàn, tỉnh Nghệ An (THPT Nam Đàn I, THPT Nam Đàn 2, THPT Sào Nam, THPT Mai Hắc Đế THPT Kim Liên) thực trạng sử dụng ngôn ngữ lập trình C++ bồi giỏi thi học sinh giỏi tỉnh, có kết sau: Bảng thơng số việc sử dụng ngơn ngữ lập trình C++ bồi giỏi thi học sinh giỏi tỉnh số trường THPT địa bàn huyện Nam Đàn năm học 2020-2021 skkn TT Tên trường THPT Nam Đàn THPT Nam Đàn THPT Kim Liên THPT Sào Nam THPT Mai Hắc Đế Học sinh thi C++ 1(100%) 1(100%) 0 Học sinh thi Pascal 1(100%) 1(100%) 1(100%) Nhận xét: Các giáo viên chưa thực trọng việc đưa ngơn ngữ lập trình C++ thay cho ngơn ngữ truyền thống Pascal Trong trường THPT có trường học sinh thi ngơn ngữ lập trình Pascal chiếm 60% Nội dung giải pháp thực Trước hết tơi đưa tốn sau: Bài tốn Viết chương trình nhập vào từ bàn phím số ngun N (N>10), in hình số nguyên tố khoảng từ đến N *Khái niệm số nguyên tố: Một số nguyên dương N số nguyên tố có ước số khác Như ta giải tốn theo cách sau: C1: Viết hàm kiểm tra số nguyên k có phải số ngun tố khơng kt(k) Sau cho vịng for chạy i=2 đến N để kiểm tra số i số nguyên tố in Để cải tiến cần giảm thiểu số số cần kiểm tra Thay kiểm tra số i ta kiểm tra số i có tính chất giống 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  ( số có dạng 6k  chia hết cho 2, 6k  chia hết cho 3) tốn giải theo cách: C2: Sử dụng tính chất số nguyên tố Phương pháp Sàng nguyên tố Sàng Ơ-ra-tô-xten (Eratosthene) Đây phương pháp để tìm tất số nguyên tố giới hạn Nhà tốn học cổ Hi Lạp Ơ-ra-tô-xten (thế kỉ III trước công nguyên) người đấu tiên tìm cách làm Ơng viết số giấy cỏ sậy căng khung dùi thủng hợp số vật tương tự sàng: Các hợp số sàng qua, số nguyên tố giữ lại Bảng số nguyên tố gọi sàng Ơ-ra-tô-xten Ta làm sau: Trước hết xóa số skkn Giữ lại số xóa tất bội mà lớn Giữ lại số xóa tất bội mà lớn Giữ lại số (số bị xóa) xóa tất bội mà lớn Giữ lại số (số bị xóa) xóa tất bội mà lớn Các số 8, 9, 10, bị xóa Khơng cần xóa tiếp bội số lớn 10 kết luận không hợp số Thật vậy, giả sử n hợp số chia hết cho số a lớn 10 n10 nên n phải chia hết cho số b nhỏ 10, n bị xóa Tơi áp dụng phương pháp sàng Ơ-ra-tô-xten vào để giải hệ thống tốn số ngun tố ngơn ngữ lập trình C++ Trong q trình lập trình tơi kết hợp sử dụng Vector, liệu kiểu tập hợp Set chương trình gọn hiệu Một số điểm trội vector: - Không cần phải khai báo kích thước mảng ví dụ: int a[100] …, vecter tự động nâng kích thước lên - Khi thêm phần tử vào vector đầy rồi, tự động tăng kích thước lên để dành chỗ cho giá trị - Vector cho biết số lượng phần tử lưu - Dùng số phần tử âm vecter ví dụ A[-6], a[-9], tiện cài đặt giải thuật Tập hợp Set C++ - Cấu trúc liệu kiểu tập hợp (Set) dùng để lưu phần tử kiểu liệu, phần tử không trùng Khi chèn phần tử vào Set, Set kiểm tra thêm phần tử khơng có set Các phần tử thêm vào xếp theo thứ tự tăng dần Do set chứa phần tử khơng trùng nhau, nên ta sử dụng cấu trúc liệu cho số toán liên quan đến tập hợp như: Cho dãy gồm n phần tử đếm số phần tử khác mảng… ***Thuật toán Sàng nguyên tố Eratosthenes Void sang() { bool f[n+1] ={0}; f[0]=1; f[1]=1; For(int i=2; i

Ngày đăng: 09/02/2023, 13:52

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan