Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
185,5 KB
File đính kèm
HỌC.rar
(294 KB)
Nội dung
Hướng dẫn ơn tập Lập trình Pascal nâng cao CÁC THUẬT TOÁN VỀ SỐ THUẬT TOÁN KIỂM TRA SỐ NGUYÊN TỐ Thuật toá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ố ngun tố Do ta kiểm tra tất số nguyên 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 nguyên 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 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 toán Euclide UCLN số a,b UCLN số b a mod b, ta đổi a b, b a mod b b Khi UCLN a 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; Nguyễn Thanh Tùng - Khoa CNTT, Đại học Sư phạm Hà Nội Hướng dẫn ôn tập Lập trình Pascal nâng cao 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ố nguyên 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ố nguyên 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Ố NGUYÊN 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 khơng phải 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 s := 1; for i := to n s := s * a; hammu := s; Nguyễn Thanh Tùng - Khoa CNTT, Đại học Sư phạm Hà Nội Hướng dẫn ôn tập Lập trình Pascal nâng cao end; THUẬT TỐN TÍNH CƠNG THỨC CHUỖI Thuật tốn tính hàm ex: ex = 1+ x + Đặt: s n = + x + x x3 xn + + + 2! 3! n! xn x x3 xn rn = , ta công thức truy hồi: + + + 2! 3! n! n! s = 1, r0 = ri-1.x ri = i si = si-1 + ri 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ÁC BÀI TẬP VỀ MẢNG CHIỀU VÀ CHIỀU BÀI TẬP Nhập vào số n (5