GA BD HSG: Chuyên đề thuật toán về số

23 755 3
Tài liệu đã được kiểm tra trùng lặp
GA BD HSG: Chuyên đề thuật toán về số

Đ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

Giáo án bồi dưỡng HSG 11 Tuần:……… Tiết PPCT:….… Ngày dạy:…/…./ 2008… ƠN TẬP VỀ CÁC THUẬT TỐN VỀ SỐ THUẬT TỐN KIỂM TRA SỐ NGUN TỐ Thuật tốn ta dựa ý tưởng: n >1 không chia hết cho số nguyên tất số từ đến n n số nguyên tố Do ta kiểm tra tất số ngun từ đến có round(sqrt(n)), n khơng chia hết cho số n số ngun tố Nếu thấy biểu thức round(sqrt(n)) khó viết ta kiểm tra từ đến n div Hàm kiểm tra nguyên tố nhận vào số nguyên n trả lại kết true (đúng) n nguyên tố trả lại false n không số nguyên tố function ngto(n:integer):boolean; var i:integer; begin ngto:=false; if n ln} ngto:=true; end; Chú ý: Dựa hàm kiểm tra ngun tố, ta tìm số ngun tố từ đến n cách cho i chạy từ đến n gọi hàm kiểm tra nguyên tố với giá trị i THUẬT TỐN TÍNH TỔNG CÁC CHỮ SỐ CỦA MỘT SỐ NGUYÊN Ý tưởng ta chia số cho 10 lấy dư (mod) chữ số hàng đơn vị, lấy số div 10 phần cịn lại Do chia liên tục không chia (số 0), lần chia chữ số ta cộng dồn chữ số vào tổng Hàm tính tổng chữ số nhận vào số nguyên n trả lại kết tổng chữ số nó: function tongcs(n:integer): integer; var s : integer; begin s := 0; while n begin s := s + n mod 10; n := n div 10; end; tongcs := s; end; Chú ý: Tính tích chữ số tương tự, cần ý ban đầu gán s thực phép nhân s với n mod 10 THUẬT TỐN EUCLIDE TÍNH UCLN Ý tưởng thuật tốn Euclide UCLN số a,b UCLN số b a mod b, ta đổi a b, b a mod b b Khi UCLN a Giáo án bồi dưỡng HSG 11 Hàm UCLN nhận vào số nguyên a,b trả lại kết UCLN số function UCLN(a,b: integer): integer; var r : integer; begin while b0 begin r := a mod b; a := b; b := r; end; UCLN := a; end; Chú ý: Dựa thuật tốn tính UCLN ta kiểm tra số ngun tố hay khơng Ngồi dùng để tối giản phân số cách chia tử mẫu cho UCLN THUẬT TỐN TÍNH TỔNG CÁC ƯỚC SỐ CỦA MỘT SỐ NGUYÊN Để tính tổng ước số số n, ta cho i chạy từ đến n div 2, n chia hết cho số ta cộng số vào tổng (Chú ý cách tính chưa xét n ước số n) function tongus(n : integer): integer; var i,s : integer; begin s := 0; for i := to n div if n mod i = then s := s + i; tongus := s; end; Chú ý: Dựa thuật tốn tính tổng ước số, ta kiểm tra số ngun có số hồn thiện khơng: số ngun gọi số hồn thiện tổng ước số CÁC THUẬT TỐN VỀ VỊNG LẶP THUẬT TỐN TÍNH GIAI THỪA MỘT SỐ NGUN Giai thừa n! tích số từ đến n Vậy hàm giai thừa viết sau: function giaithua(n : integer) : longint; var i : integer; s : longint; begin s := 1; for i := to n s := s * i; giaithua := s; end; THUẬT TỐN TÍNH HÀM MŨ Trong Pascal ta tính ab công thức exp(b*ln(a)) Tuy nhiên a số dương khơng thể áp dụng Ta tính hàm mũ an cơng thức lặp sau: function hammu(a : real; n : integer): real; var s : real; i : integer; begin Giáo án bồi dưỡng HSG 11 s := 1; for i := to n s := s * a; hammu := s; end; THUẬT TỐN TÍNH CƠNG THỨC CHUỖI Thuật tốn tính hàm ex: e x 1  x  Đặt: sn 1  x  x x3 xn    2! 3! n! x x3 xn xn rn  , ta công thức truy hồi:    2! 3! n! n! 1, r0 1 s  ri-1 x   ri i   s i-1  ri si  Khi đó, ta tính cơng thức chuỗi sau: function expn(x: real; n : integer): real; var s,r : real; i : integer; begin s := 1; r := 1; for i := to n begin r := r * x / i; s := s + r; end; expn := s; end; Cà Mau, ngày tháng năm 2008 Ký duyệt Giáo án bồi dưỡng HSG 11 Tuần:……… Tiết PPCT:….… Ngày dạy:…/…./ 2008… ÔN TẬP CÁC BÀI TẬP VỀ MẢNG CHIỀU VÀ CHIỀU BÀI TẬP Nhập vào số n (5

Ngày đăng: 23/07/2013, 01:27

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

Tài liệu liên quan