Về số học thuật toán luận văn thạc sĩ

36 267 0
Về số học thuật toán  luận văn thạc 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

1 mở đầu Nếu trước thập niên 70 kỉ XX, Số học xem ngành lí thuyết xa rời thực tiễn nhất, ngày nhiều thành tựu Số học có ứng dụng trực tiếp vào vấn đề sống thông tin, mật mã, kĩ thuật máy tính Một phương hướng đời phát triển mạnh mẽ: Số học thuật toán Đây ngành toán học nghiên cứu nội dung số học sở sử dụng công cụ thuật toán Số học ngành toán cổ nhất, Thuật toán lại khái niệm mẻ, đời phát triển kỉ XX Do đó, nói Số học thuật toán cầu nối Số học Thuật toán, xây dựng sở thành tựu Toán - Tin học Một toán tiếng giải kỉ XX toán thứ 10 Hilbert "Có tồn thuật toán tổng quát cho phép ta trả lời phương trình Diophante cho trước có nghiệm nguyên hay không?" Bài toán nhà toán học người Nga, Michiakêvích, giải trọn vẹn vào năm 1970 với câu trả lời phủ định, tức thuật toán Bài toán thứ 10 Hilbert giải thành tựu quan trọng Số học Thuật toán Số học thuật toán không phát triển thành tựu Số học sơ cấp, mà tận dụng thành tựu cua Số học đại, Đại số đại, Cũng ngành toán học khác, Số học thuật toán có toán NP, tức thuật toán giải thời gian đa thức, tiêu biểu toán: Phân tích số nguyên thừa số nguyên tố, thuật toán kiểm tra số nguyên tố, thuật toán chuyển đĩa Bài toán Tháp Hà Nội Trong luận văn này, đề cập đến vấn đề sở Số học thuật toán, bao gồm nội dung sau: Giới thiệu kiến thức sở thuật toán, độ phức tạp thời gian; Giới thiệu khái niệm, kết toán số học sở có nhiều ứng dụng Tin học; Giới thiệu 20 chương trình tin học viết ngôn ngữ lập trình Pascal thuật toán số học sở, bao gồm: Chuyển đổi hệ ghi số, kiểm tra nguyên tố; kiểm tra nguyên tố theo xác suất; giải phương trình Diophante bậc nhất; giải phương trình đồng dư; tìm số hạng dãy số Fibonacci, Ngoài ra, phần phụ lục luận văn đưa hệ thống tập Số học thuật toán Tác giả xin trân trọng cảm ơn thầy giáo hướng dẫn khoa học - PGS.TS Nguyễn Thành Quang - tận tình hướng dẫn, bảo giúp đỡ để tác giả hoàn thành luận văn Tác giả cảm ơn thầy, cô giáo chuyên ngành Đại số Lý thuyết số, Khoa Toán học, Khoa Đào tạo Sau đại học Trường Đại học Vinh nhiệt tình giảng dạy, hướng dẫn cho học tập nghiên cứu Tác giả xin cảm ơn Trường Đại học Đồng Tháp giúp đỡ, tạo điều kiện thuận lợi cho học viên học tập nghiên cứu theo chương trình liên kết đào tạo sau đại học Trường Đại học Vinh Trường Đại học Đồng Tháp Xin cảm ơn gia đình, bạn hữu quan tâm giúp đỡ suốt thời gian học vừa qua Tuy cố gắng trình học tập, nghiên cứu viết luận văn, chắn nhiều thiếu sót Rất mong góp ý, bảo quí thầy cô bạn đồng nghiệp Nghệ An, tháng 02 năm 2012 Tác giả Nguyễn Thành Trung chương số kiến thức sở 1.1 Thuật toán 1.1.1 Thuật toán Có thể định nghĩa thuật toán theo nhiều cách khác nhau, không trình bày chặt chẽ thuật toán giáo trình logic, mà hiểu khái niệm thuật toán theo cách thông thường Thuật toán quy tắc để với liệu ban đầu cho, ta tìm lời giải sau thời gian hữu hạn Có thể nói rằng, thuật toán cần phải thỏa mãn yêu cầu sau đây: [1] Tính hữu hạn Thuật toán cần phải kết thúc sau số hữu hạn bước Khi thuật toán ngừng làm việc, ta phải thu câu trả lời cho vấn đề đặt [2] Tính xác định bước, thuật toán cần phải xác định, nghĩa rõ việc cần làm Ngoài ra, ta phải xét đến tính hiệu thuật toán Có nhiều thuật toán, mặt lí thuyết kết thúc sau hữu hạn bước, nhiên thời gian "hữu hạn" vượt khả làm việc Những thuật toán không xét quan tâm thuật toán sử dụng thật máy tính Cũng mục tiêu nói trên, cần phải ý đến độ phức tạp thuật toán Độ phức tạp thuật toán đo không gian, tức dung lượng nhớ máy tính cần thiết để thực thuật toán, thời gian, tức thời gian máy tính thực thuật toán Trong luận văn này, nói đến độ phức tạp thuật toán, hiểu độ phức tạp thời gian Dĩ nhiên, thời gian làm việc máy tính chạy thuật toán không phụ thuộc vào thuật toán mà phụ thuộc vào máy tính sử dụng Vì thế, để có tiêu chuẩn chung, ta đo độ phức tạp thuật toán số phép tính phải làm thực thuật toán Nhưng điều lại phụ thuộc vào độ lớn kiện đầu vào Trong ứng dụng thực tiễn, ta cần ước lượng thật tốt độ phức tạp Để làm điều đó, ta dùng khái niệm bậc O-lớn 1.1.2 Độ phức tạp thuật toán Giả sữ f (n) g (n) hai hàm xác định tập hợp số nguyên dương Ta nói, f (n) có bậc O-lớn g (n), viết f (n) = O(g (n)) f = O(g), tồn số C > cho với n đủ lớn, hàm f(n) g(n) dương đồng thời f(n) < C.g(n) k ni , (ak > 0, k = 1, 2, ) g (n) = nk Ví dụ: Cho hai đa thức f (n) = i=0 đa thức xác định tập số nguyên dương Khi đó, f = O(g ) k tồn số dương C = để với n đủ lớn f (n), g (n) dương i=1 f (n) < C.g (n) 1.1.3 Tính chất bậc O-lớn Ta có tính chất sau đây: [1] Nếu f1 = O (g ) f2 = O (g ) f1 + f2 = O (g ) [2] Nếu f1 = O (g1 ) f2 = O (g2 ) f1 f2 = O (g1 g2 ) f (n) [3] Nếu tồn giới hạn hữu hạn lim f = O(g ) n→∞ g (n) [4] Với > 0, ta có logn = O (n ) 1.1.4 Định nghĩa Một thuật toán gọi có độ phức tạp đa thức số phép tính cần thiết thực thuật toán không vượt O(log d n), n độ lớn đầu vào d số nguyên dương Nói cách khác, đầu vào số k-bit thời gian thực thuật toán O(k d ), tức tương đương với đa thức k 1.2 Số nguyên 1.2.1 Định lí Giả sử b số nguyên lớn Khi số nguyên n viết dạng n = ak bk + ak−1 bk−1 + + a1 b + a0 aj số nguyên, ≤ aj ≤ b − 1, j = 0, 1, 2, , k hệ số ak = Số b nói định lí 1.2.1 gọi số biểu diễn Các hệ biểu diễn số 10 tương ứng gọi hệ thập phân hệ nhị phân Các hệ số aj gọi chữ số Về sau ta dùng bit để chữ số hệ nhị phân Nếu số nguyên n biểu diễn số b có k chữ số từ chứng minh trên, ta có: bk−1 ≤ n < bk Như vậy, số chữ số n tính theo công thức: lnn +1 k = [logb n] + = lnb Để phân biệt biểu diễn số nguyên hệ số khác nhau, ta thường dùng cách viết (ak ak−1 a1 a0 )b để số n = ak bk + ak−1 bk−1 + + a1 b + a0 Ví dụ: (2011)10 = (11111111011)2 Trong máy tính, bên cạnh hệ số 2, người ta thường dùng hệ số 16 Lí chủ yếu việc chuyển số viết số sang số số thực cách dễ dàng Ví dụ, muốn chuyển số số sang số 8, ta việc nhóm từ phải sang trái khối chữ số, chuyển số viết khối sang dạng thập phân Chẳng hạn, số (1111001010)2 tách thành nhóm 11, 111, 001, 010 Từ đó, ta (11111001010)2 = (3712)8 Ta làm tương tự số cho thành số viết số 16, cần nhóm thành chữ số Chú ý rằng, trường hợp này, cần thêm vào kí hiệu để "chữ số" từ 10 đến 15 1.2.2 Số nguyên tố Số nguyên tố số nguyên lớn 1, không chia hết cho số nguyên dương Số nguyên lớn số nguyên tố gọi hợp số Định lí sau Số học sở quan trọng thuật toán tìm số nguyên tố không vượt số tự nhiên cho trước √ 1.2.3 Định lí Mọi hợp số n có ước nguyên tố không vượt n Chứng minh Thật vậy, n hợp số nên ta gọi a b ước thật n Khi n = ab,√trong < a ≤ b < n Rõ ràng ta phải có a b không vượt n, giả sử a Khi đó, ước nguyên tố a đồng thời ước nguyên tố n Từ định lí 1.2.3, ta có thuật toán tìm số nguyên tố nhỏ số nguyên dương n cho trước 1.2.4 Thuật toán sàng số nguyên tố Eratosthenes Trước tiên, ta viết dãy số tự nhiên từ đến n Trong dãy đó, ta gạch bỏ số số nguyên tố Số nguyên tố dãy số Tiếp theo ta gạch khỏi dãy số tất số chia hết cho Số không chia hết cho 3: số nguyên tố Ta lại gạch khỏi dãy số lại số không chia hết cho Ta thu số nguyên tố Tiếp tục như√thế, ta gạch khỏi dãy số chia hết cho số nguyên tố bé n Sàng Eratosthenes mặc ta thuật toán xác định số nguyên tố không vượt số cho trước lại sử dụng để xác định xem số cho có phải số nguyên tố hay không Nguyên nhân thuật toán có độ phức tạp lớn: để kiểm tra n, ta √ phải thực phép chia cho tất số nguyên tố không vượt n 1.2.5 Định lí Số học Mọi số nguyên lớn phân tích cách thành tích số nguyên tố, thừa số viết với thứ tự không giảm 1.3 Quan hệ đồng dư 1.3.1 Định nghĩa Giả sử m số nguyên dương Ta nói hai số nguyên a b đồng dư với modulo m m chia hết hiệu a - b Để quan hệ đồng dư, ta dùng kí hiệu a ≡ b(mod m) Như vậy, a ≡ b(mod m) tồn số nguyên k cho a = b + km 1.3.2 Định lí Trung Quốc phần dư Giả sử m1 , m2 , , mr số nguyên dương nguyên tố đôi Khi hệ đồng dư:  x ≡ a1 (mod m1 )    x ≡ a2 (mod m2 ) có nghiệm modulo M = m1 m2 mr    x ≡ ar (mod mr ) 1.3.3 Định lí Wilson Cho p số tự nhiên lớn Số p nguyên tố (p − 1)! ≡ −1(mod p) Định lí Wilson dùng để kiểm tra số có phải số nguyên tố hay không Tuy nhiên, dễ thấy thuật toán dựa định lí Wilson khó sử dụng với số nguyên lớn số phép tính bit cao gặp độ phức tạp thời gian Để đơn giản, ta gọi công việc xem xét số cho có phải số nguyên tố hay không kiểm tra nguyên tố Định lí sau có nhiều ứng dụng kiểm tra nguyên tố 1.3.4 Định lí Fermat bé Nếu p số nguyên tố a số không chia hết cho p ap−1 ≡ 1(mod p) Nói cách khác, nếp p số nguyên tố a số nguyên dương ap ≡ a(mod p) Vấn đề đặt tồn số nguyên dương b thỏa điều kiện n−1 b ≡ 1(mod n) có suy n số nguyên tố hay không? Câu trả lời phủ định Thật vậy, ta có: 2560 = (22 )280 ≡ 1(mod 3), 2560 = (210 )56 ≡ 1(mod 11) 2560 = (216 )35 ≡ 1(mod 17) Do đó, 2560 ≡ 1(mod 561) Nhưng 561 không số nguyên tố 561 = 3.11.17 Như vậy, chiều ngược lại định lí Fermat bé không Tuy nhiên, số nguyên thỏa mãn giả thuyết định lí Fermat bé "có nhiều khả năng" số nguyên tố Ta có định nghĩa sau: 1.3.5 Định nghĩa Giả sử b số nguyên dương Nếu n hợp số nguyên dương n b ≡ b(mod n) n gọi số giả nguyên tố sở b Trong trường hợp (b, n) = 1, ta thường dùng định nghĩa tương đương n−1 b ≡ 1(mod n) Ví dụ: Vì 2560 ≡ 1(mod 561) nên 561 số giả nguyên tố sở 1.3.6 Định lí Có vô số số giả nguyên tố sở Chứng minh Giả sử n số giả nguyên tố sở 2, ta chứng tỏ m = 2n − số giả nguyên tố sở Thật vậy, theo giả thiết n hợp số nên ta giả sử n = dt (1 < d, t < n) Lại do: m = 2n − = 2dt − nên 2dt |(m + 1) Suy 2d |(m + 1) Do đó, 2d − 1|m Vậy m hợp số Mặt khác, n số giả nguyên tố nên 2n ≡ 2(mod n) Do tồn số k cho 2n − = kn Ta có: 2m−1 = 2kn, đó, m = (2n − 1)|(2nk − 1) = 2m−1 − 1, tức 2m−1 ≡ 1(mod m) Vậy m số giả nguyên tố sở Như vậy, để kiểm tra số có phải số nguyên tố không, trước tiên ta xem có phải số giả nguyên tố sở không, sau tiếp tục kiểm tra sở khác Tuy nhiên, tồn số giả nguyên tố sở, số Carmichael 1.3.7 Định nghĩa Hợp số nguyên n thỏa mãn bn−1 ≡ 1(mod n) với số nguyên dương b cho (n, b) = gọi số Carmichael Ví dụ: Số nguyên 561 = 3.11.17 số Carmichale Thật vậy, (b, 561) = ta suy (b, 3) = (b, 5) = (b, 7) = Theo định lí Fermat bé, ta có: b2 ≡ 1(mod 3), b10 ≡ 1(mod 11), b16 ≡ 1(mod 17) Và ta được: b560 = (b2 )280 ≡ 1(mod 3), b560 = (b10 )56 ≡ 1(mod 11), b560 = (b16 )35 ≡ 1(mod 17) Suy ra: b560 ≡ 1(mod 561) với số nguyen dương b thỏa điều kiện (b, 561) = 1.3.8 Định lí Nếu n = q1 q2 qk , qj số nguyên tố khác thỏa điều kiện (qj − 1)|(n − 1) với j = 1, 2, , k n số Carmichael Như vậy, việc kiểm tra nguyên tố khó khăn ta gặp phải số Carmichael Tuy nhiên, ta khắc phục cách sau đây: Nếu gặp n−1 đồng dư bn−1 ≡ 1(mod n) ta chuyển sang xét đồng dư b ≡ x(mod n) Nếu n số nguyên tố x ≡ 1(mod n) x ≡ −1(mod n), ngược lại n phải hợp số 561−1 Ví dụ: Với số Carmichael bé 561, ta có: = 5280 ≡ 67(mod 561) Vậy 561 hợp số 1.3.9 Định nghĩa Giả sử n số nguyên dương lẻ, n− = 2s t, s số nguyên không âm, t số nguyên dương lẻ s = Ta nói n trải qua kiểm tra Miller sở b với số nguyên dương b j bt ≡ 1(mod n) b2 t ≡ −1(mod n) với j thỏa điều kiện ≤ j ≤ s − 1.3.10 Mệnh đề Nếu n số nguyên tố n trải qua kiểm tra Miller sở b với số b cho n ước b n−1 s−k Thật vậy, giả sử n − = 2s t Ta đặt xk = b 2k = b2 t với k = 0, s Vì n số nguyên tố nên theo định lí Fermat bé, ta được: x0 ≡ 1(mod n−1 n) Khi đó, x1 = b Suy x21 = x0 ≡ 1(mod n), tức x ≡ 1(mod n) x ≡ −1(mod n) Tiếp tục trình vậy, ta đến kết luận rằng: xk ≡ 1(mod n) xk ≡ −1(mod n) với k = 0, s Vậy n trải qua kiểm tra Miller sở b Dễ thấy rằng, n trải qua kiểm tra Miller n số giả nguyên tố sở b Ta có định nghĩa sau: 1.3.11 Định nghĩa Số nguyên n gọi số giả nguyên tố mạnh sở b hợp số trải qua kiểm tra Miller sở b Như vậy, số giả nguyên tố mạnh số giả nguyên tố Tuy nhiên, ta có định lí sau đây: 1.3.12 Định lí Tồn vô số số giả nguyên tố mạnh sở Thật vậy, giả sử n số giả nguyên tố sở Khi đó, với số nguyên lẻ đó, ta có 2n−1 − = nk Đặt N = 2n − 1, có ước 2d − với d ước n Mặt khác: N −1 N − = 2n − = 2(2n−1 − 1) = 2nk 2 = 2nk = (2n )k ≡ 1(mod N ) Vậy với số giả nguyên tố n, ta xây dượng số giả nguyên tố mạnh N số n khác cho ta số N khác Định lí chứng minh có vô số số giả nguyên tố sở Ta dùng kiểm tra Miller để kiểm tra nguyên tố số không lớn Ta biết rằng, số giả nguyên tố mạnh lẻ sở bé 2047 Như vậy, n lẻ n < 2047, n nguyên tố trải qua kiểm tra Miller Cách làm áp dụng cần kiểm tra nguyên tố số không lớn Đối với số lớn, ta dùng thuật toán xác suất dựa định lí sau đây: 1.3.13 Định lí Nếu n hợp số dương lẻ tồn không n−1 sở b, ≤ b ≤ n − 1, cho n trải qua kiểm tra Miller sở Nhờ vào định lí này, ta kết luận n hợp số trải n−1 qua kiểm tra Miller với sở Tuy nhiên, việc kiểm tra đòi hỏi nhiều thời gian Từ định lí 1.3.13, ta suy rằng, số b chọn ngẫu nhiên khoảng ≤ b ≤ n − n trải qua kiểm tra Miller với sở b với xác suất bé Như vậy, ta chọn k số ngẫu nhiên xác suất để n trải qua kiểm tra Miller đỗi với k sở bé 4k Khi với k đủ lớn, ví dụ k = 20, xác suất nhỏ, nên với n trải qua với 20 sở ngẫu nhiên tin "hầu chắn" n số nguyên tố 1.3.14 Định nghĩa Phi hàm Euler, kí hiệu φ(n), hàm số học có giá trị n số số không vượt n nguyên tố với n 1.3.15 Định lí Euler Nếu m số nguyên dương a số nguyên tố với m aφ(m) ≡ 1(mod m), φ hàm số học Euler Định lí Euler dùng để tìm nghịch đảo modulo m Chẳng hạn, a m số nguyên tố nhau, ta có aaφ(m)−1 ≡ 1(mod m), tức aφ(m)−1 nghịch đảo a modulo m Từ suy nghiệm phương trình đồng dư tuyến tính ax ≡ b(mod m), với (a, m) = x ≡ aφ(m)−1 b(mod m) 1.3.16 Định lí (Công thức phi hàm Euler) Giả sử n = pα1 pα2 pαk k phân tích n thành thừa số nguyên tố Khi đó, ta có: φ(n) = n − 1− − p1 p2 pk Các tính chất phi hàm Euler sử dụng để tính đồng dư lũy thừa lớn Chẳng hạn, ta cần tính an mod k, n số nguyên lớn Giả sử ta có: k = pα1 pα2 pαs s αi Khi đó, aφ(pi ) ≡ 1(mod pαi i ) Nếu N bội chung nhỏ φ(pαi i ) aN ≡ 1(mod k ) Do đó, viết n = N q + r với r < N, ta an ≡ ar (mod k ) Ta xét ví dụ số Tính 21000000 mod 77 Ta có 77 = 7.11, φ(7) = 6, φ(11) = 10 Bội chung nhỏ 10 30 Do đó, 230 ≡ 1(mod 77) Mặt khác, 1000000 = 30.33333 + 10 Vậy: 21000000 ≡ 210 ≡ 23(mod 77) 10 chương số thuật toán số học Chương chủ yếu giới thiệu thuật toán số học lập trình ngôn ngữ Pascal 2.1 Giới thiệu ngôn ngữ Pascal Ngôn ngữ Pascal giáo sư Niklaus Wirth (Trường Đại học Kỹ Thuật Zurich, Thụy Sĩ) đưa vào năm 1970 Lập trình ngôn ngữ Pascal có định kiểu mạnh mẻ Pascal ngôn ngữ có cấu trúc: - Về mặt liệu, - Về mặt lênh, - Về mặt chương trình Thuật giải chương trình: - Thuật giải: Là tập hợp hữu hạn thao tác (các bước thực công việc.) - Chương trình: Là tập hợp lệnh điều khiển máy tính thực 2.2 Một số thuật toán số học lập trình ngôn ngữ Pascal 2.1.1 Thuật toán chuyển số nguyên dương từ hệ thập phân sang hệ nhị phân - Thuật toán [B1 ] Nhập số nguyên dương n [B2 ] Nếu n ≤ in kết Ngược lại thực [B3 ] [B3 ] Thực phép chia n cho 2, ta thương r1 Tiếp tục thực phép chia r1 cho 2, ta thương r2 Rồi lại lấy r2 chia cho 2, ta thương r3 Quá trình kết thúc bước thứ i với ri = (i = 1, 2, 3, ) Khi đó, hiển thị kết - Lập trình cụ thể Program Chuyen mot so nguyen duong tu thap phan sang nhi phan; Var d: array[1 20] of Byte; i, j, n: Integer; Begin Write(’Nhap so thap phan la n =’); Readln(n); i:=1; Repeat d[i]:= n mod 2; 22 End; Procedure sapxeptang; Var i, j, tang : integer; Begin For i := to n -1 For j := i + to n If a[i] > a[j] then Begin tang := a[i]; a[i] := a[j]; a[j] := tang; End; Writeln(’Day so sau sap xep tang dan la:’); For i := to n writeln(a[i]); End; Procedure sapxepgiam; Var i, j, giam : integer; Begin For i := to n -1 For j := i + to n If a[i] < a[j] then Begin giam := a[i]; a[i] := a[j]; a[j] := giam; End; Writeln(’Day so sau sap xep giam dan la:’); For i := to n writeln(a[i]); End; Begin Writeln(’In mot day so theo thu tu tang dan hoac giam dan’); Writeln(’ ’); Nhap; Sapxeptang; Sapxepgiam; Writeln(’Nhan Enter de ket thuc chuong trinh.’); Readln; End 2.2.15 Thuật toán tìm tất phần tử số hoàn chỉnh dãy số nhập từ bàn phím - Lập trình cụ thể Program Tim tat ca cac so hoan hao cua mot day so nhap tu ban phim; Var i, n : integer; a : array[1 100] of integer; 23 Procedure nhap; Begin Write(’So phan tu cua day la n = ’); Repeat Readln(n); If (1 < n) and (n [...]... kết luận Luận văn này trình bày một số kiến thức cơ sở về Số học thuật toán và dùng ngôn ngữ lập trình Pascal để viết các chương trình chạy trên máy tính cho các thuật toán số học có nhiều ứng dụng trong thực tiễn Chương 1 được dành để giới thiệu các định nghĩa cơ bản nhất của lí thuyết thuật toán và các vấn đề cơ sở của Số học có ứng dụng trong tin học: - Lý thuyết thuật toán; Độ phức tạp của thuật toán; ... khái niệm và kết quả cơ bản của Số học; - Số giả nguyên tố, số Carmichael; Số giả nguyên tố mạnh; Số trải qua được kiểm tra Miller Chương 2 giới thiệu nội dung 20 thuật toán số học được lập trình bằng ngôn ngữ Pascal Phần phụ lục ngoài luận văn, giới thiệu một số bài tập mang tính chất luyện tập và tính toán thực hành, một số khác là mở rộng lí thuyết của Số học thuật toán 34 tài liệu tham khảo Tiếng... Tiếng việt [1] Phạm Huy Điển (2002), Tính toán, lập trình và giảng dạy toán học trên Maple, Nhà xuất bản Khoa học và Kỹ thuật, Hà Nội [2] Ngô Minh Đức (2008), Chuyên đề thuật toán số học, VNOI Olimpic Tin học Quốc gia Hà Nội [3] Lê Tuấn Hoa (2003), Đại số máy tính - Cơ sở Grobner, Nhà xuất bản Đại học Quốc gia, Hà Nội [4] Doãn Tam Hòe (2008), Toán học tính toán, Nhà xuất bản Giáo dục, Hà Nội [5] Phan... chuyên đề bồi dưỡng học sinh giỏi toán trung học, Nhà xuất bản Giáo dục, Hà Nội [6] Hà Huy Khoái (2004), Chuyên đề bồi dưỡng học sinh giỏi toán trung học phổ thông, Nhà xuất bản Giáo dục, Hà Nội [7] Hà Huy Khoái, Phan Huy Điển (2003), Số học thuật toán, Nhà xuất bản Đại học Quốc gia Hà Nội [8] Quách Tuấn Ngọc (2001), Ngôn ngữ lập trình Pascal, Nhà xuất bản Thống kê, Hà Nội [9] Đàm Văn Nhỉ, Lưu Bá Thắng,... de ket thuc chuong trinh.’); Readln; End 2.2.4 Thuật toán kiểm tra tính nguyên tố của một số nguyên dương - Thuật toán [B1 ] Nhập số nguyên dương n [B2 ] Thực hiện liên tiếp các phép chia n cho i, với i là một số nguyên √ dương không vượt quá n Nếu số dư của tất cả các phép chia này đều khác 0 thì in ra n là số nguyên tố, ngược lại thì kết luận n không là số nguyên tố - Lập trình cụ thể Program Kiem... Eratosthenes để tìm tất cả các số nguyên tố không vượt quá một số nguyên dương cho trước - Ý tưởng Ta lập một dãy các số nguyên dương từ 2 đến n mà tạm gọi đó là sàng Số nhỏ nhất trong dãy này (số 2) là số nguyên tố Sau đó la loại dần khỏi dãy này các số là bội của 2 (kể cả 2) Số nhỏ nhất trong phần còn lại (số 3) là số nguyên tố Quá trình trên cứ tiếp diễn đến khi không còn số nào trong dãy - Lập trình... Writeln(n,’ khong la so nguyen to.’); Writeln(’Nhan Enter de ket thuc chuong trinh.’); Readln; End 2.2.5 Thuật toán tìm tất cả các số nguyên tố không vượt quá số nguyên dương n - Thuật toán [B1 ] Nhập số nguyên dương n [B2 ] Kiểm tra tính nguyên tố của số nguyên dương i không vượt quá n [B3 ] In ra kết quả nếu i là số nguyên tố - Lập trình cụ thể Program Tim tat cac so nguyen to khong vuot qua so nguyen duong... 2.2.20 Thuật toán kiểm tra nguyên tố theo sác xuất -Ý tưởng Thuật toán sác xuất tiếp cận bài toán theo hướng khác, không theo con đường tìm một ước không tầm thường mà dựa vào hai tính chất khác của số nguyên tố Cho p là một số nguyên tố và a là số nguyên không chia hết cho p, ta luôn có: ap−1 ≡ 1(mod p) (1) a2 ≡ 1(mod p) ⇔ a ≡ 1(mod p) hoặc a ≡ −1(mod p) (2) Giả sử p − 1 = q.2t , trong đó q là một số. .. chuong trinh.’); Readln; End 2.2.9 Thuật toán tìm ước chung lớn nhất và bội chung nhỏ nhất của hai số nguyên dương - Thuật toán [B1 ] Nhập hai số nguyên dương cần tìm UCLN, BCNN a và b [B2 ] Giả sử a > b Thực hiện phép chia a cho b, ta được số dư r Tiếp tục thực hiện phép chia b cho r, ta được số dư r1 Rồi lại chia r cho r1 Quá trình này sẽ kết thúc ở bước thứ i nào đó với số dư ri−1 = 0 Khi đó, UCLN(a,... then write(’ ’,i,’ ’); End; Writeln(’Nhan Enter de ket thuc chuong trinh.’); 14 Readln; End 2.2.6 Thuật toán kiểm tra số hoàn chỉnh - Thuật toán [B1 ] Nhập số nguyên dương n cần kiêm tra [B2 ] Tính tổng S các ước dương của n Nếu S = 2n thì n là số hoàn hảo, ngược lại thì hiển thị ra màn hình n không là số hoàn hảo - Lập trình cụ thể Program Kiem tra so hoan hao; Var n, i, s, tongcantim: integer; Function ... thuyết thuật toán vấn đề sở Số học có ứng dụng tin học: - Lý thuyết thuật toán; Độ phức tạp thuật toán; - Các khái niệm kết Số học; - Số giả nguyên tố, số Carmichael; Số giả nguyên tố mạnh; Số trải... "chữ số" từ 10 đến 15 1.2.2 Số nguyên tố Số nguyên tố số nguyên lớn 1, không chia hết cho số nguyên dương Số nguyên lớn số nguyên tố gọi hợp số Định lí sau Số học sở quan trọng thuật toán tìm số. .. nội dung 20 thuật toán số học lập trình ngôn ngữ Pascal Phần phụ lục luận văn, giới thiệu số tập mang tính chất luyện tập tính toán thực hành, số khác mở rộng lí thuyết Số học thuật toán 34 tài

Ngày đăng: 15/12/2015, 07:09

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

Tài liệu liên quan