Tải bản đầy đủ (.pdf) (151 trang)

Bài giảng toán 2 - bộ môn toán đại học

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1009.5 KB, 151 trang )

Bài giảng
Toán 2
Bộ môn Toán - ĐẠI HỌC THĂNG LONG
Học kì I, năm học 2007 - 2008
Mục lục
Trang
Chương 1. Thuật toán, Số nguyên, Trường hữu hạn, Đa thức 1
1.1 Khái niệm Thuật toán theo nghĩa trực giác . . . . . . . . . . . . 1
1.1.1 Khái niệm Thuật toán . . . . . . . . . . . . . . . . . . . 1
1.1.2 Các đặc trưng của Thuật toán . . . . . . . . . . . . . . 3
1.1.3 Một số ví dụ về thuật toán . . . . . . . . . . . . . . . . 4
1.2 Số nguyên và phép chia . . . . . . . . . . . . . . . . . . . . . . 12
1.2.1 Tính chia hết . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.2 Số nguyên tố và Định lí cơ bản của số học . . . . . . . . 16
1.2.3 Ước số chung lớn nhất và Bội số chung nhỏ nhất . . . . 18
1.2.4 Số học đồng dư . . . . . . . . . . . . . . . . . . . . . . 30
1.2.5 Biểu diễn số tự nhiên theo các hệ cơ số khác nhau . . . . 36
1.2.6 Một số ứng dụng . . . . . . . . . . . . . . . . . . . . . 39
1.3 Đa thức và Trường hữu hạn . . . . . . . . . . . . . . . . . . . . 44
1.3.1 Trường và Trường hữu hạn . . . . . . . . . . . . . . . . 44
1.3.2 Đa thức trên một trường . . . . . . . . . . . . . . . . . 50
Chương 2. Nguyên lí bù trừ, Đệ qui và Hệ thức truy hồi 65
2.1 Nguyên lí bù trừ . . . . . . . . . . . . . . . . . . . . . . . . . . 65
2.2 Định nghĩa bằng đệ qui . . . . . . . . . . . . . . . . . . . . . . 67
2.2.1 Định nghĩa hàm bằng đệ qui . . . . . . . . . . . . . . . 68
2.2.2 Định nghĩa tập hợp bằng đệ qui . . . . . . . . . . . . . 71
2.3 Hệ thức truy hồi . . . . . . . . . . . . . . . . . . . . . . . . . . 74
2.3.1 Mô hình hóa bằng hệ thức truy hồi . . . . . . . . . . . . 75
2.4 Giải Hệ thức truy hồi . . . . . . . . . . . . . . . . . . . . . . . 79
2.4.1 Hệ thức truy hồi tuyến tính thuần nhất hệ số hằng . . . . 80
i


Mục lục
2.4.2 Giải hệ thức truy hồi tuyến tính thuần nhất hệ số hằng . 81
2.5 Hệ thức truy hồi tuyến tính không thuần nhất hệ số hằng . . . . 89
2.6 Độ phức tạp của thuật toán . . . . . . . . . . . . . . . . . . . . 92
2.6.1 Khái niệm cơ bản . . . . . . . . . . . . . . . . . . . . . 92
2.6.2 Thứ bậc trong tập các hàm số . . . . . . . . . . . . . . 98
2.6.3 Định lí cơ bản cho phân tích thuật toán . . . . . . . . . 99
Chương 3. Đại số Boole 112
3.1 Đại số boole . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
3.1.1 Định nghĩa trừu tượng của đại số boole . . . . . . . . . 112
3.1.2 Biểu thức boole và hàm boole . . . . . . . . . . . . . . 115
3.1.3 Tính đối ngẫu . . . . . . . . . . . . . . . . . . . . . . . 117
3.2 Biểu diễn các hàm Boole . . . . . . . . . . . . . . . . . . . . . 117
3.2.1 Khai triển tổng các tích . . . . . . . . . . . . . . . . . . 118
3.2.2 Tính đầy đủ . . . . . . . . . . . . . . . . . . . . . . . . 120
3.3 Các cổng logic . . . . . . . . . . . . . . . . . . . . . . . . . . 120
3.3.1 Tổ hợp các cổng . . . . . . . . . . . . . . . . . . . . . 121
3.4 Cực tiểu hóa các mạch . . . . . . . . . . . . . . . . . . . . . . 123
3.4.1 Phương pháp biến đổi đại số . . . . . . . . . . . . . . . 124
3.4.2 Phương pháp bảng Karnaugh . . . . . . . . . . . . . . . 125
3.4.3 Phương pháp Quine - McCluskey . . . . . . . . . . . . 131
Tài liệu tham khảo 144
Chỉ mục 145
ii Bộ môn Toán - ĐẠI HỌC THĂNG LONG
Chương 1
Thuật toán, Số nguyên,
Trường hữu hạn, Đa thức
M
ục đích chính của chúng ta ở chương này là tìm hiểu khái niệm thuật
toán theo nghĩa trực giác và một số đặc trưng. Sau đó, chúng ta sẽ lần

lượt xem xét một số thuật toán trên nền những khái niệm cơ bản như số nguyên,
phép chia, số học đồng dư, trường hữu hạn, đa thức, . . . .
1.1 Khái niệm Thuật toán theo nghĩa trực giác
Khái niệm Thuật toán
Khái niệm 1.1.1 Thuật toán là một hệ thống chặt chẽ và rõ ràng những qui
tắc nhằm xác định một dãy thao tác trên những đối tượng, sao cho sau một số
hữu hạn bước thực hiện dãy thao tác đó, ta đạt được mục tiêu định trước.
Nhận xét 1.1.2 Từ khái niệm thuật toán ở trên, ta chú ý rằng nếu cho trước một
thuật toán thì hệ thống những qui tắc của nó, mang cho bất cứ đối tượng nào
(người / máy) thực hiện, trong cùng một điều kiện cho trước, ta cũng phải thu
được kết quả như nhau dù cho đối tượng thực hiện thuật toán có thể không hiểu
gì về bản chất cũng như ý nghĩa của vấn đề.
Ví dụ 1.1.3 Mô tả thuật toán tìm phần tử lớn nhất trong một dãy hữu hạn
a
1
, a
2
, . . . , a
n
cho trước.
Khi gặp bài toán này, cách giải quyết thông thường nhất mà chúng ta hay làm
với n cụ thể là duyệt lần lượt n số trong dãy đã cho, so sánh để chỉ ra số lớn
nhất. Nhưng khi cần chỉ ra các bước thực hiện về mặt nguyên tắc để giải quyết
bài toán này, chúng ta cần hình thức hóa chúng dưới dạng ngôn ngữ thông
Chương 1. Thuật toán, Số nguyên, Trường hữu hạn, Đa thức
thường sao cho các bước của chúng ta đã chỉ ra có thể áp dụng cho mọi dãy n
số a
1
, a
2

, . . . , a
n
bất kì.
Các bước thực hiện được mô tả như sau:
B1 Giá trị cực đại tạm thời sẽ nhận giá trị đầu tiên (a
1
) của dãy. Phần tử đang
duyệt cũng chính là a
1
. Ta hiểu rằng giá trị cực đại tạm thời là giá trị lớn
nhất trong những giá trị kể từ đầu dãy đến phần tử đang xét.
B2 Xét phần tử có thứ tự kế tiếp thứ tự của phần tử đang xét ở bước trước (nếu
bước trước đang xét phần tử a
k
thì ta sẽ xét phần tử a
k 1
). So sánh phần
tử này với giá trị cực đại tạm thời. Giá trị cực đại tạm thời sẽ giữ nguyên
giá trị nếu nó không nhỏ thua phần tử đang xét. Trái lại, nó sẽ nhận giá trị
của phần tử đang xét.
B3 Lặp lại bước B2 chừng nào phần tử đang xét không phải phần tử cuối cùng
trong dãy.
B4 Kết thúc và ta có giá trị lớn nhất cần tìm chính là giá trị cực đại tạm thời
cuối cùng.
Sử dụng ngôn ngữ thông thường để mô tả thuật toán như trên rất thuận tiện
trong việc suy nghĩ, trao đổi thuật toán giữa người với người. Cách thức này đã
tồn tại hàng ngàn năm cùng với những thuật toán cổ xưa nhất của loài người.
Nhưng cùng với sự ra đời của máy tính điện tử, nội dung của các thuật toán dần
được thể hiện thông qua giả mã một dạng ngôn ngữ hình thức hơn (có thể rắc
rối khó hiểu hơn với con người, nhưng thuận tiện hơn khi làm việc với máy tính

điện tử).
Dưới đây là mô tả giả mã của thuật toán trên:
Thuật toán 1 Thuật toán tìm phần tử lớn nhất trong một dãy hữu hạn a
1
, a
2
, . . . , a
n
.
Đầu vào: Dãy hữu hạn a
1
, a
2
, . . . , a
n
.
Đầu ra: Giá trị lớn nhất M max a
1
, a
2
, . . . , a
n
.
1: max : a
1
.
2: Duyệt tất cả k sao cho 2 k n Thực hiện
3: Nếu max a
k
thì

4: max : a
k
.
5: Kết thúc Nếu
6: Kết thúc Duyệt
7: M : max.
Trong dạng giả mã trên, ở dòng đánh số 1, ta thấy kí hiệu “:=”. Đây là kí
hiệu để chỉ giá trị đứng sau nó được gán cho “biến” đứng trước nó. Dòng số 2
và dòng số 6 để chỉ phép duyệt hay một vòng lặp, duyệt các phần tử trong dãy:
2 Bộ môn Toán - ĐẠI HỌC THĂNG LONG
1.1. Khái niệm Thuật toán theo nghĩa trực giác
a
k
với k nhận các giá trị từ 2 đến n. Mỗi bước duyệt sẽ thực hiện công việc
được chỉ ra từ dòng số 3 đến dòng số 5. Công việc này là một phép thử điều
kiện: nếu biểu thức logic thỏa mãn thì công việc ở dòng số 4 sẽ được thực hiện,
trái lại thì thôi.
Các đặc trưng của Thuật toán
Trong thực tiễn, hay gặp một vài thuật ngữ khá gần với thuật ngữ “thuật
toán”, như: kịch bản, cách dùng, quá trình, tiến trình, chương trình hành động,
luật lệ, phương pháp, thủ tục,. . . . Ta cần đưa ra những tính chất đặc trưng của
khái niệm “thuật toán” để phân biệt khái niệm đó với những khái niệm khác.
Thuật toán có sáu đặc trưng cơ bản: tính dừng sau hữu hạn bước, tính xác định,
tính phổ dụng, đầu vào, đầu ra, tính đúng đắn hay tính hiệu quả. Sẽ rất hữu ích
khi mô tả các thuật toán nếu ta ghi nhớ các tính chất đó trong đầu.
Tính kết thúc (tính dừng)
Thuật toán bao giờ cũng phải dừng sau một số hữu hạn bước thực hiện. Khi
nói đến tính kết thúc của thuật toán, chúng ta cần chú ý rằng mô tả các bước
trông có vẻ là hữu hạn nhưng chưa chắc đã dừng sau hữu hạn bước.
Ví dụ 1.1.4 Đoạn qui tắc sau không dừng sau hữu hạn bước mặc dù mô tả của

nó dường như chỉ có ba bước nên nó không phải là thuật toán:
B1 Xóa bảng.
B2 Viết số 1 lên bảng.
B3 Thực hiện B1.
Khi xây dựng thuật toán, phải chứng minh tính kết thúc cho nó. Cụ thể là nêu
bật được ý sau: với những dữ liệu tùy ý nằm trong miền thao tác của thuật toán
thì thuật toán sẽ dừng sau hữu hạn bước. Ngoài ra ta thường sẽ cố gắng chỉ rõ
thuật toán dừng ở đâu, bước nào, lập công thức đánh giá tổng số bước thực hiện.
Tính dừng của thuật toán thường được chứng minh bằng cách dựa trên tiến độ
của thuật toán, xây dựng một dãy số nguyên đơn điệu và bị chặn. Khi đó hai
tính chất đơn điệu và bị chặn của dãy số nguyên sẽ đảm bảo cho tính kết thúc
của thuật toán.
Tính xác định
Ở mỗi bước, các thao tác phải hết sức rõ ràng, không được phép gây nên
sự nhập nhằng, lẫn lộn, tùy tiện. Trong cùng một điều kiện, hai “bộ xử lý”
Bộ môn Toán - ĐẠI HỌC THĂNG LONG 3
Chương 1. Thuật toán, Số nguyên, Trường hữu hạn, Đa thức
(người hoặc máy) thực hiện cùng một bước của thuật toán thì phải cho cùng
một kết quả. Chẳng hạn thuật toán 1 tìm số lớn nhất, dù cho máy tính hay bất
cứ người nào thực hiện, kết quả trả về vẫn đảm bảo là số lớn nhất trong dãy
a
1
, a
2
, . . . , a
n
.
Tính phổ dụng
Thuật toán phải có tính năng có thể giải bất kì bài toán nào trong một lớp
bài toán. Cụ thể là thuật toán có thể làm việc với các dữ liệu khác nhau trong

một miền xác định và luôn luôn dẫn đến kết quả mong muốn. Trong ví dụ thuật
toán
1 tìm số lớn nhất ở trên, ta sẽ luôn có số lớn nhất của dãy a
1
, a
2
, . . . , a
n
cho dù n và bản thân các giá trị a
1
, a
2
, . . . , a
n
có thay đổi.
Đầu vào và Đầu ra
Một thuật toán có thể có nhiều đại lượng vào mà chúng ta gọi là dữ liệu đầu
vào. Sau khi dừng thuật toán, tùy theo chức năng mà thuật toán đảm nhiệm,
chúng ta có thể thu được một số đại lượng ra xác định. Tuy nhiên vẫn có những
thuật toán không có dữ liệu vào và cũng có thể không có dữ liệu ra.
Tính đúng đắn (tính hiệu quả)
Yêu cầu quan trọng nhất của thuật toán ngoài tính dừng sau hữu hạn bước
là tính đúng đắn, cụ thể là: với dữ liệu vào cho trước, sau một số hữu hạn bước
thuật toán phải dừng và cho kết quả mong muốn. Ta chú ý rằng bằng phép chạy
thử thuật toán với một số bộ dữ liệu nào đó chỉ có thể phát hiện tính sai của thuật
toán chứ không khẳng định được tính đúng đắn của thật toán. Muốn khẳng định
tính đúng đắn của thuật toán thì ta phải tiến hành chứng minh. Có thể và nên
chứng minh tính đúng đắn của thuật toán bằng cách dựa trên chính văn bản của
thuật toán. Ta sẽ xem xét cách chứng minh tính đúng đắn của một số thuật toán
ở những phần nội dung tiếp theo của cuốn sách này.

Một số ví dụ về thuật toán
Những thuật toán tìm kiếm
Những bài toán xác định vị trí của một phần tử nào đó trong một bảng liệt
kê tuyến tính là những bài toán thường gặp trong nhiều trường hợp khác nhau.
Những bài toán như vậy được gọi là những bài toán tìm kiếm. Trong phần này
ta sẽ xem xét một số thuật toán tìm kiếm.
4 Bộ môn Toán - ĐẠI HỌC THĂNG LONG
1.1. Khái niệm Thuật toán theo nghĩa trực giác
Bài toán tìm kiếm tổng quát được mô tả như sau: xác định vị trí của phần
tử x trong một bảng liệt kê các phần tử phân biệt a
1
, a
2
, . . . , a
n
hoặc chỉ ra
rằng nó không có mặt trong bảng liệt kê đó. Lời giải của bài toán trên là vị trí i
của số hạng a
i
trong bảng liệt kê nếu a
i
x, và là 0 nếu x không có mặt trong
bảng liệt kê.
Thuật toán để giải bài toán trên rất đơn giản. Nó có tên là thuật toán tìm
kiếm tuyến tính hay tìm kiếm tuần tự. Đầu tiên ta so sánh x với a
1
. Nếu
x a
1
thì kết quả trả về là vị trí 1. Khi x a

1
thì ta so sánh x với a
2
. Nếu
x a
2
thì kết quả trả về là vị trí 2. Khi x a
2
thì ta so sánh x với a
3
. Tiếp
tục quá trình này bằng cách so sánh x với từng số hạng a
i
của bảng liệt kê cho
tới khi x xuất hiện tại một vị trí nào đó ta gặp hoặc tất cả các phần tử của bảng
đã được so sánh mà vẫn không gặp x. Giả mã của thuật toán này được trình bày
như trong thuật toán
2.
Thuật toán 2 Tìm kiếm tuyến tính.
Đầu vào: Số x, dãy n số phân biệt a
1
, a
2
, . . . , a
n
.
Đầu ra: Vị trí vitri i của x trong dãy hoặc vitri 0 nếu x không xuất hiện.
1: i : 1.
2: Trong khi i n và x a
i

Thực hiện
3: i : i 1.
4: Kết thúc Trong khi
5: Nếu i n thì
6: vitri : i.
7: không thì
8: vitri : 0.
9: Kết thúc Nếu
10: Kết quả trả về là vitri.
Thuật toán trên hoàn toàn có thể được áp dụng cho mọi dãy gồm n số phân
biệt a
1
, a
2
, . . . , a
n
. Nhưng nhược điểm của nó là ứng với mọi dãy cụ thể,
trong trường hợp xấu nhất, số phép so sánh đúng bằng độ lớn n của dãy số dữ
liệu đầu vào. Bây giờ ta xem xét một thuật toán tìm kiếm khác, có số phép so
sánh trong trường hợp xấu nhất ít hơn, nhưng chỉ áp dụng cho các dãy gồm n số
phân biệt được sắp tăng dần hoặc giảm dần. Thuật toán thứ hai này được gọi là
thuật toán tìm kiếm nhị phân. Đầu tiên ta so sánh x với phần tử nằm ở “điểm
giữa” (phần tử ở vị trí
1 n
2
) của bảng liệt kê. Nếu x bằng phần tử này thì
vị trí của x trong bảng đã được xác định. Nếu không, do bảng đã được sắp tăng
dần hoặc giảm dần nên x chỉ có thể rơi vào một trong hai nửa của bảng (bảng
con). Miền tìm kiếm đã được hạn chế chỉ còn một nửa. Tiếp tục so sánh x với
phần tử ở giữa và cứ như vậy, ta sẽ có được vị trí của x hoặc biết được x không

nằm trong bảng đã cho.
Bộ môn Toán - ĐẠI HỌC THĂNG LONG 5
Chương 1. Thuật toán, Số nguyên, Trường hữu hạn, Đa thức
Ví dụ 1.1.5 Tìm số 19 trong bảng liệt kê
1, 2, 3, 5, 6, 7, 8, 10, 12, 13, 15, 16, 18, 19, 21, 23.
Lời giải:
B1 Ta so sánh 19 với “điểm giữa” của dãy đã cho: a
8
10. Vì 19 a
8
10
nên ta chỉ quan tâm đến dãy con thứ hai: 12, 13, 15, 16, 18, 19, 21, 23.
B2 Ta so sánh 19 với “điểm giữa” của dãy con chỉ ra ở B1: a
12
16. Vì
19 a
12
16 nên ta chỉ quan tâm đến dãy con: 18, 19, 21, 23.
B3 Ta so sánh 19 với “điểm giữa” của dãy con chỉ ra ở B2: a
14
19. Vì
19 a
14
19 nên vị trí xuất hiện của 19 là 14.
Giả mã của thuật toán tìm kiếm nhị phân được trình bày trong thuật toán
3.
Thuật toán 3 Tìm kiếm nhị phân.
Đầu vào: Số x, dãy n số phân biệt tăng dần a
1
, a

2
, . . . , a
n
.
Đầu ra: Vị trí vitri i của x trong dãy hoặc vitri 0 nếu x không xuất hiện.
1: i : 1, j : n.
2: Trong khi i j Thực hiện
3: m :
i j
2
.
4: Nếu x a
m
thì
5: i : m 1.
6: không thì
7: j : m.
8: Kết thúc Nếu
9: Kết thúc Trong khi
10: Nếu x a
i
thì
11: vitri : i.
12: không thì
13: vitri : 0.
14: Kết thúc Nếu
15: Kết quả trả về là vitri.
Thuật toán sinh cấu hình tổ hợp
Như chúng ta đã biết, trong quá trình giải bài toán đếm, thông thường chúng
ta sẽ sử dụng một số công cụ để đếm các “cấu hình tổ hợp” (hoán vị, chỉnh hợp,

tổ hợp, . . . ) thỏa mãn yêu cầu đầu bài. Thế nhưng có nhiều loại bài toán mà để
giải nó, chỉ áp dụng các công cụ đếm thôi chưa đủ. Chúng ta còn cần phải có
6 Bộ môn Toán - ĐẠI HỌC THĂNG LONG
1.1. Khái niệm Thuật toán theo nghĩa trực giác
khả năng liệt kê các cấu hình tổ hợp theo thứ tự mà chúng ta mong muốn để rồi
qua đó, ta xây dựng được lời giải của bài toán đặt ra. Trong phần này, chúng
ta sẽ tìm hiểu một số thuật toán liệt kê cấu hình tổ hợp theo thứ tự mong muốn
dựa trên phương pháp sinh.
Phương pháp sinh có thể áp dụng để giải bài toán liệt kê cấu hình tổ hợp nếu
như hai điều kiện sau được thực hiện:
a) Có thể xác định được một thứ tự trên tập các cấu hình tổ hợp cần liệt kê. Từ
đó có thể xác định được cấu hình đầu tiên và cấu hình cuối cùng trong thứ
tự đã xác định.
b) Xây dựng được thuật toán từ cấu hình chưa phải là cuối cùng đang có, đưa
ra cấu hình kế tiếp nó.
Ta sẽ gọi thuật toán nói trong điều kiện b) là thuật toán sinh kế tiếp. Rõ ràng là
thứ tự trong điều kiện a) cần được lựa chọn sao cho có thể xây dựng được thuật
toán sinh kế tiếp. Giả thiết rằng hai điều kiện nêu trên đã được thực hiện, khi đó
thuật toán sinh để giải bài toán liệt kê cấu hình tổ hợp đặt ra được mô tả bằng
thuật toán
4 (trong đó Sinh kế tiếp là thuật toán con sinh cấu hình kế tiếp).
Thuật toán 4 Sinh cấu hình tổ hợp.
1: Xây dựng cấu hình đầu tiên.
2: Trong khi Cấu hình hiện tại chưa phải là cấu hình cuối cùng Thực hiện
3: Kết xuất cấu hình hiện tại.
4: Sinh kế tiếp.
5: Kết thúc Trong khi
Trong nội dung tiếp ngay đây, ta sẽ xem xét một số ví dụ sinh cấu hình tổ
hợp. Tất cả đều có cùng dạng thuật toán chính như thuật toán 4. Ta sẽ chỉ tìm
và nêu ra những thuật toán sinh kế tiếp tương ứng.

Định nghĩa 1.1.6 Bộ số a
1
, a
2
, . . . , a
k
a
i
x
1
, x
2
, x
3
, . . . , x
n
được
gọi là đi trước (nhỏ hơn) bộ số b
1
, b
2
, . . . , b
k
b
i
x
1
, x
2
, x

3
, . . . , x
n
theo thứ tự từ điển nếu có số m 1 m k để a
1
b
1
, a
2
b
2
, . . . ,
a
m 1
b
m 1
, a
m
b
m
.
Ví dụ 1.1.7 Liệt kê tất cả các hoán vị của tập 1, 2, 3, . . . , n theo thứ tự từ
điển.
Lời giải: Ta đi xây dựng thuật toán sinh hoán vị kế tiếp theo thứ tự từ điển.
Hoán vị đầu tiên của ta là 1, 2, . . . , n. Hoán vị cuối cùng là n, n 1 , . . . , 1.
Giả sử ta đã có hoán vị cho trước a
1
, a
2
, . . . , a

n
(không phải là hoán vị cuối
Bộ môn Toán - ĐẠI HỌC THĂNG LONG 7
Chương 1. Thuật toán, Số nguyên, Trường hữu hạn, Đa thức
cùng). Ta tìm từ phải qua trái (của hoán vị đang có) chỉ số j đầu tiên thỏa mãn
a
j
a
j 1
. Ví dụ nếu ta đang có hoán vị 3, 6, 2, 5, 4, 1 thì do 4 1, 5 4,
2 5 nên chỉ số j 3. Sau khi có chỉ số j, ta tìm tiếp a
k
là số nhỏ nhất
còn lớn hơn a
j
trong các số ở bên phải a
j
. Trong ví dụ minh họa với hoán vị
3, 6, 2, 5, 4, 1 thì a
k
4 với k 5. Ta có khẳng định:
• Hoán vị có dạng a
1
, a
2
, . . . , a
j 1
, a
k
, b

j 1
, . . . , b
n
(trong đó
b
j 1
, . . . , b
n
là hoán vị nào đó của a
j
, a
j 1
, . . . , a
k 1
, a
k 1
, . . . , a
n
)
là những hoán vị đi sau hoán vị a
1
, a
2
, . . . , a
n
. Thật vậy, ta có điều này
vì j 1 phần tử đầu của hai hoán vị là như nhau và a
j
a
k

.
• Không có hoán vị nào của tập 1, 2, . . . , n đi trước hoán vị dạng
a
1
, a
2
, . . . , a
j 1
, a
k
, b
j 1
, . . . , b
n
nói trên mà lại đi sau hoán vị
a
1
, a
2
, . . . , a
n
. Lí do giải thích điều này là cách chọn a
k
(số nhỏ nhất
còn lớn hơn a
j
trong các số ở bên phải a
j
).
Vậy hoán vị được sinh kế tiếp là hoán vị nhỏ nhất trong các hoán vị có dạng

a
1
, a
2
, . . . , a
j 1
, a
k
, b
j 1
, . . . , b
n
(trong đó b
j 1
, . . . , b
n
là hoán vị nào
đó của a
j
, a
j 1
, . . . , a
k 1
, a
k 1
, . . . , a
n
). Ta có a
j 1
a

j 2
. . .
a
k 1
a
j
do a
j 1
a
j 2
. . . a
k 1
a
k
a
j
. Ta cũng có
a
j
a
k 1
. . . a
n
vì a
k
a
k 1
. . . a
n
và a

k
là số nhỏ nhất lớn
hơn a
j
. Vậy
a
n
a
n 1
. . . a
k 1
a
j
a
k 1
. . . a
j 1
.
Nói cách khác, hoán vị
a
1
, a
2
, . . . , a
j 1
, a
k
, a
n
, a

n 1
, . . . , a
k 1
, a
j
, a
k 1
, . . . , a
j 1
là hoán vị kế tiếp hoán vị đã cho.
Với hoánvị 3, 6, 2, 5, 4, 1 đưa ra ở trênthì hoánvị liền sau là 3, 6, 4, 1, 2, 5.
Các qui tắc sau cho phép ta xây dựng hoán vị kế tiếp của hoán vị
a
1
, a
2
, . . . , a
n
:
B1 Tìm từ phải qua trái (của hoán vị đang có a
1
, a
2
, . . . , a
n
) chỉ số j đầu tiên
sao cho a
j
a
j 1

.
B2 Tìm a
k
là số nhỏ nhất còn lớn hơn a
j
trong số các số ở bên phải a
j
.
B3 Đổi chỗ a
j
với a
k
.
B4 Lật ngược đoạn từ a
j 1
đến a
n
.
8 Bộ môn Toán - ĐẠI HỌC THĂNG LONG
1.1. Khái niệm Thuật toán theo nghĩa trực giác
Thuật toán 5 Sinh hoán vị kế tiếp.
Đầu vào: Hoán vị hiện tại a
1
, a
2
, . . . , a
n
n, n 1, . . . , 2, 1.
Đầu ra: Hoán vị liền sau theo thứ tự từ điển.
1: j : n 1.

2: Trong khi a
j
a
j 1
Thực hiện
3: j : j 1.
4: Kết thúc Trong khi
5: k : n.
6: Trong khi a
j
a
k
Thực hiện
7: k : k 1.
8: Kết thúc Trong khi
9: Đổi chỗ a
j
và a
k
.
10: s : j 1, r : n.
11: Trong khi r s Thực hiện
12: Đổi chỗ a
r
và a
s
.
13: r : r 1, s : s 1.
14: Kết thúc Trong khi
15: Hoán vị mới liền sau hoán vị đã cho theo thứ tự từ điển là a

1
, a
2
, . . . , a
n
.
Các qui tắc trên được thể hiện thông qua thuật toán 5 dưới dạng giả mã.
Ví dụ 1.1.8 Liệt kê tất cả các xâu nhị phân độ dài n theo thứ tự từ điển.
Lời giải: Xâu nhị phân đầu tiên là 00 . . . 0
n bit
. Xâu nhị phân cuối cùng sẽ là
11 . . . 1
n bit
. Giả sử b
1
, b
2
, . . . , b
n
là xâu nhị phân hiện tại (không phải xâu nhị
phân cuối cùng). Qui tắc sau sẽ cho ta xâu nhị phân kế tiếp:
B1 Tìm chỉ số i đầu tiên từ phải qua trái (i n, n 1 , . . . , 1) thỏa mãn
b
i
0.
B2 Gán lại b
i
1 và b
j
0 với tất cả j i.

Việc chứng minh tính đúng đắn của qui tắc trên dành cho các bạn đọc như một
bài tập đơn giản.
Chẳng hạn với xâu 1101011111 ta có i 5 và xâu nhị phân kế tiếp sẽ là
1101100000.
Bài toán liệt kê tất cả các xâu nhị phân độ dài n theo thứ tự từ điển chính là
bài toán liệt kê tất cả các tập con có thể của tập có n phần tử a
1
, a
2
, . . . , a
n
.
Phần tử a
i
sẽ có mặt trong tập con đang xét nếu và chỉ nếu bit thứ i (các bit
được tính từ 1 từ trái qua phải) nhận giá trị 1.
Thuật toán
6 là biểu diễn dạng giả mã của qui tắc sinh xâu nhị phân kế tiếp theo
thứ tự từ điển.
Bộ môn Toán - ĐẠI HỌC THĂNG LONG 9
Chương 1. Thuật toán, Số nguyên, Trường hữu hạn, Đa thức
Thuật toán 6 Sinh xâu nhị phân kế tiếp.
Đầu vào: Xâu nhị phân hiện tại b
1
b
2
. . . b
n
11 . . . 1
n

.
Đầu ra: Xâu nhị phân liền sau theo thứ tự từ điển.
1: i : n.
2: Trong khi b
i
1 Thực hiện
3: b
i
: 0, i : i 1.
4: Kết thúc Trong khi
5: b
i
: 1.
6: Xâu nhị phân mới liền sau xâu nhị phân đã cho theo thứ tự từ điển là b
1
b
2
. . . b
n
.
Ví dụ 1.1.9 Liệt kê tất cả các tập con m phần tử của tập n phần tử (tổ hợp
chập m của n phần tử).
Lời giải: Ta có thể coi như tập n phần tử đã cho là tập A 1, 2, . . . , n .
Mỗi tập con m phần tử của A có thể biểu diễn bởi một dãy có thứ tự các phần tử
a
1
, a
2
, . . . , a
m

(a
i
A) thỏa mãn 1 a
1
a
2
. . . a
m
n. Ta chọn
thứ tự từ điển là thứ tự để sinh tập con kế tiếp của tập con a
1
, a
2
, . . . , a
m
biểu diễn bởi dãy a
1
, a
2
, . . . , a
m
(a
i
A) thỏa mãn 1 a
1
a
2
. . . a
m
n. Tập con đầu tiên là 1, 2, . . . , m và tập con cuối cùng là

n m 1, n m 2, . . . , n . Tính đúng đắn của thuật toán sinh kế tiếp
sau được đề nghị như một bài tập dành cho các bạn:
B1 Tìm phần tử đầu tiên từ phải qua trái a
i
của dãy a
1
, a
2
, . . . , a
m
thỏa mãn
a
i
n m i.
B2 Thay a
j
bởi a
i
j i 1 với j i 1, m và a
i
bởi a
i
1.
Chẳng hạn tập con 4 phần tử của tập 1, 2, 3, 4, 5, 6 đang xét là tập
1, 2, 5, 6 . Lùi từ phải qua trái tathấy a
4
6 6 4 4, a
3
5 6 4 3,
a

2
2 6 4 2. Vậy i 2. Ta thay a
2
bởi 2 1 3, a
3
bởi
2 3 2 1 4 và a
4
bởi 2 4 2 1 5. Vậy tập con kế tiếp là
1, 3, 4, 5 .
Thuật toán
7 là biểu diễn dạng giả mã của qui tắc sinh tập con kế tiếp theo thứ
tự từ điển.
Mặc dù thuật toán sinh cụ thể nào cũng có tính chất phổ dụng (áp dụng được
cho mọi bộ dữ liệu ứng với bài toán cho trước) nhưng phương pháp sinh nói
chung không có tính chất phổ dụng. Không phải cấu hình kế tiếp nào cũng được
sinh một cách đơn giản từ cấu hình hiện tại. Mặt khác, cấu hình ban đầu không
phải dễ tìm vì ngay cả sự tồn tại của một cấu hình nhiều khi vẫn còn là nghi vấn.
Vì vậy, thông thường thuật toán sinh chỉ có thể xây dựng được đối với những
10 Bộ môn Toán - ĐẠI HỌC THĂNG LONG
1.1. Khái niệm Thuật toán theo nghĩa trực giác
Thuật toán 7 Sinh tập con m phần tử của tập 1, 2, . . . , n kế tiếp theo thứ tự từ điển.
Đầu vào: Tập con hiện tại a
1
, a
2
. . . a
m
n m 1, n m 2, . . . n thỏa mãn
1 a

1
a
2
. . . a
m
n.
Đầu ra: Tập con gồm m phần tử liền sau theo thứ tự từ điển.
1: i : m.
2: Trong khi a
i
n m i Thực hiện
3: i : i 1.
4: Kết thúc Trong khi
5: a
i
: a
i
1.
6: Duyệt tất cả j sao cho i 1 j m Thực hiện
7: a
j
: a
i
j i.
8: Kết thúc Duyệt
9: Tập con m phần tử mới sinh liền sau tập con m phần tử đã cho theo thứ tự từ điển là
a
1
, a
2

, . . . , a
m
.
bài toán liệt kê tổ hợp đơn giản. Để giải những bài toán liệt kê phức tạp, người
ta thường dùng thuật toán có tính phổ dụng cao hơn. Đó là thuật toán quay lui.
Khai triển Cantor của một số nguyên
Mệnh đề 1.1.10 Mọi số nguyên không âm nhỏ hơn n! đều có thể biểu diễn duy
nhất dưới dạng:
a
1
.1! a
2
.2! . . . a
n 1
. n 1 !
trong đó a
i
là các số nguyên không âm không vượt quá i với i
1, n 1.
Biểu diễn nói trên được gọi là khai triển Cantor và các số a
1
, a
2
, . . . , a
n 1
được gọi là các Cantor của các số nguyên này.
Ta không quan tâm đến chứng minh của mệnh đề trên mặc dù nó rất đơn giản.
Chúng ta sẽ chỉ xem xét các khía cạnh ứng dụng của khai triển Cantor và các số
Cantor của một số nguyên nhỏ hơn n! cho trước.
Cho hoán vị p

1
, p
2
, . . . , p
n
của tập 1, 2, . . . , n . Đặt a
i
(với i
1, n 1) là số các số nguyên nhỏ hơn i 1 mà đứng sau i 1 trong hoán vị
đã cho. Ta có a
i
i với mọi i 1, n 1. Vậy mỗi hoán vị p
1
, p
2
, . . . , p
n
của tập 1, 2, . . . , n tương ứng với duy nhất bộ số a
1
, a
2
, . . . , a
n 1
hay số
nguyên 0 a
1
.1! a
2
.2! . . . a
n 1

. n 1 ! n! 1.
Ví dụ 1.1.11 Hoán vị 1, 2, 3, 4, 5 của tập 1, 2, 3, 4, 5 cho ta a
1
0 (không
có số nào nhỏ hơn 2 mà đứng sau 2), a
2
0 (không có số nào nhỏ hơn 3 mà
đứng sau 3), a
3
0 (không có số nào nhỏ hơn 4 mà đứng sau 4), a
4
0
(không có số nào nhỏ hơn 5 mà đứng sau 5). Vậy hoán vị 1, 2, 3, 4, 5 tương
ứng với số 0.
Bộ môn Toán - ĐẠI HỌC THĂNG LONG 11
Chương 1. Thuật toán, Số nguyên, Trường hữu hạn, Đa thức
Hoán vị 2, 5, 1, 3, 4 của tập 1, 2, 3, 4, 5 cho ta a
1
1 (có số 1 nhỏ hơn
2 mà đứng sau 2), a
2
0 (không có số nào nhỏ hơn 3 mà đứng sau 3), a
3
0
(không có số nào nhỏ hơn 4 mà đứng sau 4), a
4
3 (có ba số nhỏ hơn 5 mà
đứng sau 5). Vậy hoán vị 2, 5, 1, 3, 4 tương ứng với số 73.
Hoán vị 5, 4, 3, 2, 1 của tập 1, 2, 3, 4, 5 cho ta a
1

1 (có số 1 nhỏ hơn
2 mà đứng sau 2), a
2
2 (có hai số nhỏ hơn 3 mà đứng sau 3), a
3
3 (có ba
số nhỏ hơn 4 mà đứng sau 4), a
4
4 (có bốn số nhỏ hơn 5 mà đứng sau 5).
Vậy hoán vị 5, 4, 3, 2, 1 tương ứng với số 1 4 18 96 119.
Ngược lại, cho trước số nguyên không âm nhỏ hơn n!. Ta có thuật toán
xây dựng một hoán vị của tập 1, 2, . . . , n tương ứng với số đã cho. Trước
tiên ta khai triển Cantor số nguyên không âm nhỏ hơn n! đã cho, được bộ số
a
1
, a
2
, . . . , a
n 1
. Đặt n vào vị trí còn trống thứ n a
n 1
trong hoán vị (các
vị trí còn trống được đánh số từ 1 trở đi). Rõ ràng là khi đó, sau vị trí của n
còn có a
n 1
vị trí trống. Điều đó có nghĩa là a
n 1
là số các số nguyên nhỏ hơn
n và đứng sau n trong hoán vị. Đánh số lại các vị trí còn trống theo thứ tự từ
trái qua phải theo thứ tự 1, 2, . . . , n 1. Đặt n 1 vào vị trí còn trống thứ

n 1 a
n 2
. Ta cứ tiếp tục quá trình này cho tới khi 1 được đặt vào vị trí
trống cuối cùng.
Nhận xét 1.1.12 Hai hoán vị khác nhau của cùng tập 1, 2, . . . , n sẽ được
tương ứng với hai con số nguyên không âm nhỏ hơn n! khác nhau. Hoán vị nhỏ
hơn (đi trước) theo thứ tự từ điển sẽ tương ứng với số nguyên nhỏ hơn.
Thuật toán nói trên được gọi là thuật toán sinh hoán vị Cantor. Dạng giả mã
của nó được trình bày trong thuật toán
8.
1.2 Số nguyên và phép chia
Tập hợp số nguyên Z 0, 1, 2, . . . bao gồm tất cả các số tự nhiên
và đối của tất cả các số tự nhiên. Khác với tập số tự nhiên N (nguyên lí sắp
tốt), tập hợp số nguyên không có số nhỏ nhất. Trong tập hợp số nguyên, các
phép toán cộng, trừ, nhân luôn luôn thực hiện được. Tuy nhiên, phép chia một
số nguyên cho một số nguyên khác 0 không phải bao giờ cũng thực hiện được.
Chính vì lí do phép chia cho một số nguyên khác 0 không phải bao giờ cũng
thực hiện được, nên những ý tưởng mà chúng ta phát triển trong phần này đều
dựa trên khái niệm về tính chia hết. Tính chia hết dẫn dắt chúng ta tới khái
niệm số nguyên tố và định lí cơ bản của số học (khẳng định rằng mọi số nguyên
dương khác 1 đều có thể biểu diễn một cách duy nhất dưới dạng tích của những
12 Bộ môn Toán - ĐẠI HỌC THĂNG LONG
1.2. Số nguyên và phép chia
Thuật toán 8 Sinh hoán vị thông qua khai triển Cantor.
Đầu vào: Số nguyên dương n và số nguyên i thỏa mãn 0 i n!.
Đầu ra: Hoán vị p
1
, p
2
, . . . , p

n
của tập 1, 2, . . . , n tương ứng với i.
1: x : i.
2: Duyệt tất cả j sao cho 1 j n Thực hiện
3: p
j
: 0.
4: Kết thúc Duyệt
5: Duyệt tất cả k sao cho 1 k n 1 Thực hiện
6: (Chú thích: Tính c a
n k
.)
7: c :
x
n k !
, x : x c n k !.
8: (Chú thích: Đặt n k 1 vào vị trí còn trống thứ n k 1 c.)
9: h : n.
10: Trong khi p
h
0 Thực hiện
11: h : h 1.
12: Kết thúc Trong khi
13: (Chú thích: h bây giờ đang trỏ vào vị trí còn trống thứ n k 1.)
14: Duyệt tất cả j sao cho 1 j c Thực hiện
15: h : h 1.
16: Trong khi p
h
0 Thực hiện
17: h : h 1.

18: Kết thúc Trong khi
19: Kết thúc Duyệt
20: (Chú thích: h bây giờ đang trỏ vào vị trí còn trống thứ n k 1 c.)
21: p
h
: n k 1.
22: Kết thúc Duyệt
23: (Chú thích: Và cuối cùng, đặt 1 vào vị trí trống cuối cùng còn lại.)
24: h : 1.
25: Trong khi p
h
0 Thực hiện
26: h : h 1.
27: Kết thúc Trong khi
28: p
h
: 1.
29: p
1
, p
2
, . . . , p
n
là hoán vị của 1, 2, . . . , n tương ứng với i.
số nguyên tố). Việc xác định một số có nguyên tố hay không và phân tích một
số nguyên dương khác 1 thành tích của những số nguyên tố có một vai trò quan
trọng trong ngành mật mã. Khi phép chia cho một số nguyên khác 0 không thực
hiện được, ta sẽ có thương số và số dư. Thao tác tính toán trên các số dư sẽ dẫn
tới số học đồng dư, có một vai trò không nhỏ trong tin học.
Tính chia hết

Định nghĩa 1.2.1 Cho hai số nguyên a và b, b 0. Ta nói a chia hết cho b,
hay b chia hết a nếu như có số nguyên q sao cho a bq. Khi ấy, người ta còn
nói a là bội của b hay b là ước của a và kí hiệu a
.
.
. b hay b a. Nếu a không
Bộ môn Toán - ĐẠI HỌC THĂNG LONG 13
Chương 1. Thuật toán, Số nguyên, Trường hữu hạn, Đa thức
chia hết cho b ta kí hiệu là a
.
.
.
/
b hay b a.
Chú ý: Nếu b a mà a 0 thì từ a bq ta có q 0 cho nên
a b . q b do q 1.
Ví dụ 1.2.2 Cho n và d là hai số nguyên dương. Có bao nhiêu số nguyên dương
không vượt quá n chia hết cho d?
Lời giải: Các số nguyên dương chia hết cho d là tất cả các số nguyên dương
có dạng dk, với k cũng là một số nguyên dương nào đó. Do vậy, số các số
nguyên dương chia hết cho d và không vượt quá n sẽ bằng số các số nguyên k
với 0 kd n hay 0 k
n
d
. Vậy có
n
d
số nguyên dương không vượt
quá n chia hết cho d.
Từ định nghĩa chia hết, ta có thể suy ra một số tính chất chia hết sau (coi như

những bài tập đơn giản):
Tính chất 1.2.3 (Tính chất chia hết) Trên tập số nguyên Z :
1. Nếu b a thì b a;
2. a a, a Z , a 0;
3. 1 a, a Z . Ngoài 1 ra không còn có số nguyên nào khác có tính
chất này;
4. a 0, a Z , a 0. Ngoài 0 ra không còn có số nguyên nào khác có
tính chất này;
5. b a và a b suy ra a b;
6. a b và b c suy ra a c;
7. Nếu c a
i
với mọi i 1, n thì c a
1
x
1
a
2
x
2
. . . a
n
x
n
với
x
i
Z , i
1, n.
Nếu a, b là những số nguyên bất kì (b 0) thì không phải lúc nào a cũng luôn

chia hết cho b. Một cách tổng quát, ta có định lí sau:
Định lý 1.2.1 (Thuật toán chia) Cho hai số nguyên a và b (b 0). Khi ấy có
duy nhất cặp số nguyên q, r thỏa mãn các hệ thức
a bq r và 0 r b .
14 Bộ môn Toán - ĐẠI HỌC THĂNG LONG
1.2. Số nguyên và phép chia
Chứng minh:
a) Tính tồn tại: Xét tập M bx x Z , bx a . Hiển nhiên M Z
và M bởi vì b . a là một bội của b không vượt quá a. Hơn nữa
M bị chặn trên bởi a nên trong M có phần tử lớn nhất, chẳng hạn là bq
(q Z ). Vì b 1 nên bq b bq và do đó bq b M. Mặt
khác, bq b cũng là bội của b nên ta có:
bq a bq b
hay
0 a bq b .
Đặt r a bq ta có r Z , a bq r, 0 r b .
b) Tính duy nhất: Giả sử có hai cặp số nguyên q
1
, r
1
và q
2
, r
2
thỏa mãn hệ
thức:
a bq
1
r
1

, 0 r
1
b ;

a bq
2
r
2
, 0 r
2
b .
Từ những ràng buộc trên, ta có b q
1
q
2
r
2
r
1
và r
2
r
1
b .
Do b 0, và b . q
1
q
2
b nên ta có q
1

q
2
1. Mặt khác,
q
1
q
2
là số tự nhiên nên từ q
1
q
2
1 suy ra q
1
q
2
0 hay
q
1
q
2
và do đó r
1
r
2
.
Định lí được chứng minh hoàn toàn.
Định nghĩa 1.2.4 Cho trước hai số nguyên a và b (b 0). Nếu a bq r
thỏa mãn 0 r b thì a được gọi là số bị chia, b là số chia, q được gọi là
thương số, r được gọi là số dư của phép chia a cho b. Kí hiệu q a div b,
r a mod b.

Ví dụ 1.2.5 Chia 15 cho 4 ta được thương là 3, dư 3. Chia 15 cho 4 ta được
thương là 4 dư 1.
Từ những định nghĩa trên ta có khẳng định sau:
Mệnh đề 1.2.6 Số nguyên a chia hết cho số nguyên b b 0 khi và chỉ khi số
dư của phép chia a cho b bằng không.
Bộ môn Toán - ĐẠI HỌC THĂNG LONG 15
Chương 1. Thuật toán, Số nguyên, Trường hữu hạn, Đa thức
Số nguyên tố và Định lí cơ bản của số học
Trong tập hợp số tự nhiên N thì chỉ có số không là có vô số ước. Ngoài ra
những số tự nhiên khác không đều có hữu hạn ước trong đó 1 chỉ có đúng một
ước tự nhiên là chính nó, còn mỗi số tự nhiên lớn hơn 1 bao giờ cũng có ít nhất
hai ước tự nhiên là 1 và chính nó. Trong phần này ta quan tâm đến lớp những
số tự nhiên mà ngoài ước là 1 và chính nó ra, không còn một ước tự nhiên nào
khác. Những số như vậy có một vai trò quan trọng, là những viên gạch xây nên
các số tự nhiên. Điều đó được thể hiện thông qua định lí cơ bản của số học.
Định nghĩa 1.2.7 Số tự nhiên lớn hơn 1 được gọi là số nguyên tố nếu như nó
không có ước tự nhiên nào khác ngoài số 1 và chính nó. Các số tự nhiên lớn
hơn 1 và không phải là số nguyên tố được gọi là hợp số.
Nhận xét 1.2.8 Theo định nghĩa trên, tập các số tự nhiên được phân thành ba
tập hợp rời nhau: 0, 1 , tập các số nguyên tố, tập các hợp số.
Ví dụ 1.2.9 Ta có 2, 3, 5, 7, 11, 257 là những số nguyên tố, 4, 8, 9, 12, 326
là những hợp số.
Ví dụ trên chứng tỏ trong thực tế có các số nguyên tố. Sự tồn tại của số nguyên
tố còn được khẳng định qua mệnh đề sau:
Mệnh đề 1.2.10 Ước nhỏ nhất lớn hơn 1 của một số tự nhiên lớn hơn 1 là một
số nguyên tố.
Chứng minh: Giả sử a là một số tự nhiên lớn hơn 1 và số tự nhiên p 1 là
ước nhỏ nhất của a. Nếu p không phải là số nguyên tố thì p là hợp số và do đó
nó có ước p
1

sao cho 1 p
1
p. Từ đó p
1
a và 1 p
1
p mâu thuẫn
với giả thiết p là ước nhỏ nhất lớn hơn 1 của a.
Định lí cơ bản của số học dưới đây được ta thừa nhận không chứng minh:
Định lý 1.2.2 (Định lí cơ bản của số học) Mỗi số tự nhiên lớn hơn 1 đều phân
tích được thành tích những thừa số nguyên tố và sự phân tích đó là duy nhất
nếu không kể đến thứ tự các thừa số.
Trong phân tích số a 1 thành một tích những thừa số nguyên tố ở định lí cơ
bản nói trên, có thể xảy ra nhiều thừa số nguyên tố lặp lại. Gọi p
1
, p
2
, . . . , p
k
là các ước nguyên tố đôi một khác nhau của a và α
i
(1 i k) là số các nhân
tử cùng là p
i
trong phân tích của a thành tích những thừa số nguyên tố thì ta có:
a p
α
1
1
p

α
2
2
. . . p
α
k
k
.
Phân tích kể trên được gọi là dạng phân tích tiêu chuẩn của số a.
16 Bộ môn Toán - ĐẠI HỌC THĂNG LONG
1.2. Số nguyên và phép chia
Ví dụ 1.2.11 1960 2
3
.5.7
2
.
Định lí cơ bản đã khẳng định số nguyên tố là cơ sở nhân của tất cả các số tự
nhiên lớn hơn 1. Do vậy việc xác định một số đã cho là số nguyên tố hay không
thường đóng một vai trò quan trọng, đặc biệt là trong ngành mật mã học, sử
dụng các số nguyên tố lớn để mã hóa các thông điệp bí mật.
Số nguyên tố luôn tồn tại trong thực tế nhưng liệu số các số nguyên tố có
hữu hạn? Mệnh đề sau khẳng định số các số nguyên tố là vô hạn nên không tồn
tại bảng tất cả các số nguyên tố.
Mệnh đề 1.2.12 (Euclid) Tập hợp các số nguyên tố là vô hạn.
Chứng minh: Giả sử chỉ có đúng n số nguyên tố kí hiệu là p
1
, p
2
, . . . , p
n

.
Xét số tự nhiên a p
1
p
2
. . . p
n
1. Ta nhận thấy a là một số tự nhiên lớn hơn
1 nên nó phải có một ước nguyên tố p nào đó. Nhưng vì p
i
a 1 i n
nên p là số nguyên tố khác với n số nguyên tố p
1
, p
2
, . . . , p
n
kể trên. Mâu
thuẫn này dẫn tới điều phải chứng minh.
Mặt khác, nếu ta đánh số các số nguyên tố theo thứ tự tăng dần p
1
2, p
2
3,
p
3
5, . . . thì cho đến nay, người ta cũng chưa biết một biểu thức tổng quát
nào theo chỉ số n cho số nguyên tố thứ n (p
n
). Trong thực tế cần sử dụng,

người ta lập nên các bảng số nguyên tố không vượt quá một số tự nhiên A nào
đó.
Mệnh đề 1.2.13 Ước nhỏ nhất lớn hơn 1 của một hợp số a không vượt quá a.
Chứng minh: Gọi p là ước nhỏ nhất lớn hơn 1 của a (do a là hợp số nên
a pq và q 1). Theo giả thiết p là ước nhỏ nhất lớn hơn 1 (tất nhiên p là
số nguyên tố) nên 1 p q. Vậy p
2
pq a hay p a là điều cần
phải chứng minh.
Từ mệnh đề trên ta có hệ quả sau:
Hệ quả 1.2.14 Nếu số tự nhiên a 1 không có một ước nguyên tố nào trong
khoảng từ 1 đến
a thì a là số nguyên tố.
Ví dụ 1.2.15 Chứng minh 101 là số nguyên tố.
Lời giải: Các số nguyên tố không vượt quá 101 10 là 2, 3, 5, 7. Vì 101
không chia hết cho 2, 3, 5, 7 nên suy ra 101 là số nguyên tố.
Thuật toán
9 là thuật toán lập bảng những số nguyên tố không vượt quá A hay
còn gọi là thuật toán sàng Erastothenes.
Bộ môn Toán - ĐẠI HỌC THĂNG LONG 17
Chương 1. Thuật toán, Số nguyên, Trường hữu hạn, Đa thức
Thuật toán 9 Thuật toán xây dựng bảng những số nguyên tố không vượt quá A.
Đầu vào: Số tự nhiên A 1.
Đầu ra: Tất cả những số nguyên tố không vượt quá A.
1: Duyệt tất cả k sao cho 0 k A Thực hiện
2: b
k
: k.
3: Kết thúc Duyệt
4: Xóa b

0
, b
1
.
5: m : 0, p
1
: 2.
6: Trong khi p
m 1
A Thực hiện
7: Đánh dấu p
m 1
trong bảng b
k
(0 k A).
8: Xóa tất cả bội của p
m 1
(trừ p
m 1
) trong bảng b
k
(0 k A).
9: m : m 1.
10: p
m 1
: Số đầu tiên trong bảng chưa bị xóa cũng như chưa bị đánh dấu.
11: Kết thúc Trong khi
12: Tất cả những số nguyên tố không vượt quá A chính là những số còn lại không bị xóa trong
bảng b
k

(0 k A).
Tính đúng đắn của thuật toán 9 được chứng minh như sau: mọi hợp số
a A đều có một ước nguyên tố p
a A cho nên p phải là một trong
các số nguyên tố bị đánh dấu p
1
, p
2
, . . . , p
n
với p
n
A p
n 1
và do đó
a bị xóa với tư cách là bội của p. Vậy những số còn lại trong bảng chính là
những số nguyên tố không vượt quá A.
Ta cũng có thuật toán ngắn gọn kiểm tra xem một số n cho trước có phải là
số nguyên tố hay không dựa vào nhận xét: nếu n là số nguyên tố lớn hơn 5 thì
phần dư của phép chia n cho 6 chỉ là 1 hoặc 5. Nhận xét này cho phép ta chỉ
kiểm tra tính chia hết của n cho các số nguyên dương lớn hơn 1 và không vượt
quá căn bậc hai của n theo bước tăng 2, 4, 2, 4, . .
Chứng minh tính đúng đắn của thuật toán
10 rất đơn giản coi như bài tập
dành cho các bạn.
Và cuối cùng, để tìm dạng phân tích tiêu chuẩn của một số tự nhiên n cho
trước, ta có thuật toán
11.
Ước số chung lớn nhất và Bội số chung nhỏ nhất
Ước số chung lớn nhất

Định nghĩa 1.2.16 Một số nguyên được gọi là ước chung của những số nguyên
a
1
, a
2
, . . . , a
n
nếu nó là ước đồng thời của mỗi số đó.
Định nghĩa 1.2.17 Số lớn nhất d trong tất cả các ước chung của a
1
, a
2
, . . . , a
n
(không đồng thời bằng không) được gọi là ước chung lớn nhất của
a
1
, a
2
, . . . , a
n
. Kí hiệu d UCLN a
1
, a
2
, . . . , a
n
.
18 Bộ môn Toán - ĐẠI HỌC THĂNG LONG
1.2. Số nguyên và phép chia

Thuật toán 10 Thuật toán kiểm tra tính nguyên tố của n.
Đầu vào: Số tự nhiên n.
Đầu ra: Trả lời câu hỏi n có nguyên tố hay không?
1: Nếu n 2 hoặc n 3 thì
2: Khẳng định n là số nguyên tố. Dừng thuật toán.
3: Kết thúc Nếu
4: Nếu n 0 hoặc n 1 hoặc n mod 2 0 hoặc n mod 3 0 thì
5: Khẳng định n không phải số nguyên tố. Dừng thuật toán.
6: Kết thúc Nếu
7: Nếu n 25 thì
8: Khẳng định n là số nguyên tố. Dừng thuật toán.
9: Kết thúc Nếu
10: i : 5, j : 2.
11: Trong khi i n Thực hiện
12: Nếu n mod i 0 thì
13: Khẳng định n không phải số nguyên tố. Dừng thuật toán.
14: Kết thúc Nếu
15: i : i j, j : 6 j.
16: Kết thúc Trong khi
17: Tới được đây thì n là số nguyên tố.
Định nghĩa 1.2.18 Nếu 1 là ước chung lớn nhất của a
1
, a
2
, . . . , a
n
thì ta nói
a
1
, a

2
, . . . , a
n
là nguyên tố cùng nhau. Còn nếu 1 là ước chung lớn nhất
của mọi cặp a
i
, a
j
với i j, i, j 1, 2, . . . , n thì ta nói a
1
, a
2
, . . . , a
n

nguyên tố với nhau từng đôi một.
Ví dụ 1.2.19 UCLN 36, 64, 40 4, UCLN 32, 56 8.
Nhận xét 1.2.20 • Ta đã biết 1 luôn là ước chung của mọi số nguyên nên
a
1
, a
2
, . . . , a
n
bao giờ cũng có ước chung ít nhất là số 1.
• Số 0 là bội của mọi số nguyên khác không nên nếu những số a
1
, a
2
, . . . , a

n
đều bằng 0 thì tất cả các số nguyên khác không đều là ước chung của chúng
và khi đó khái niệm ước chung lớn nhất là không có nghĩa. Do đó ta phải
có giả thiết các số đang xét a
1
, a
2
, . . . , a
n
không đồng thời bằng 0. Hơn
nữa, tập hợp tất cả các ước chung của các số đang xét không thay đổi nếu
ta thêm vào hoặc bớt đi từ a
1
, a
2
, . . . , a
n
những số 0. Do đó ta có thể
giả thiết a
i
0 với i 1, 2, . . . , n.
Định lý 1.2.3 Giả sử c là một ước chung của a
1
, a
2
, . . . , a
n
. Khi đó
c chia hết UCLN a
1

, a
2
, . . . , a
n
. Ngược lại, nếu c là ước của
UCLN a
1
, a
2
, . . . , a
n
thì c là ước chung của a
1
, a
2
, . . . , a
n
.
Chứng minh: Xét tập hợp
M a
1
x
1
a
2
x
2
. . . a
n
x

n
x
i
Z , i 1, 2, . . . , n .
Bộ môn Toán - ĐẠI HỌC THĂNG LONG 19
Chương 1. Thuật toán, Số nguyên, Trường hữu hạn, Đa thức
Thuật toán 11 Thuật toán tìm dạng phân tích tiêu chuẩn của n.
Đầu vào: Số n N , bảng p
1
, p
2
, . . . , p
k
tất cả những số nguyên tố không vượt quá n.
Đầu ra: Dạng phân tích tiêu chuẩn của n.
1: i : 1, α
i
: 0.
2: Trong khi n 1 Thực hiện
3: Trong khi n mod p
i
0 Thực hiện
4: n : n div p
i
, α
i
: α
i
1.
5: Kết thúc Trong khi

6: i : i 1, α
i
: 0.
7: Kết thúc Trong khi
8: Dạng phân tích tiêu chuẩn n
α
i
0
p
α
i
i
.
Ta có M Z và M chứa ít nhất một số nguyên dương. Thật vậy, lấy
x
1
1 nếu a
1
0,
1 nếu a
1
0,
và x
2
x
3
. . . x
n
0 thì a
1

x
1
a
2
x
2
. . . a
n
x
n
a
1
0,
a
1
M. Do đó trong M luôn có số nguyên dương nhỏ nhất chẳng hạn là d,
tức là:
d a
1
u
1
a
2
u
2
. . . a
n
u
n
, u

i
Z , i 1, 2, . . . , n và
d x, x M, x 0.
Ta sẽ chứng minh d UCLN a
1
, a
2
, . . . , a
n
. Trước hết ta có d
x, x a
1
x
1
a
2
x
2
. . . a
n
x
n
M. Thật vậy, theo định lí thuật toán
chia x dq r, 0 r d, r, q Z . Do đó
r x dq a
1
x
1
u
1

q a
2
x
2
u
2
q . . . a
n
x
n
u
n
q
là một số nguyên dương thuộc M nhỏ hơn d trái với cách chọn số d. Vậy
r 0 hay x dq, q Z , nghĩa là d x, x M . Vì a
k
a
1
.0 . . .
a
k 1
.0 1.a
k
a
k 1
.0 . . . a
n
.0 M nên d a
k
, k 1, 2, . . . , n.

Mặt khác, nếu c là ước chung của a
1
, a
2
, . . . , a
n
thì c là ước của
d a
1
u
1
a
2
u
2
. . . a
n
u
n
. Kết hợp với điều kiện d nguyên
dương, ta có d c với c là ước chung bất kì của a
1
, a
2
, . . . , a
n
. Vậy
d UCLN a
1
, a

2
, . . . , a
n
.
Và ta cũng có luôn: c là ước chung của a
1
, a
2
, . . . , a
n
khi và chỉ khi nó là
ước của d UCLN a
1
, a
2
, . . . , a
n
.
Hệ quả 1.2.21 Nếu d UCLN a
1
, a
2
, . . . , a
n
thì tồn tại những số nguyên
u
1
, u
2
, . . . , u

n
sao cho d a
1
u
1
a
2
u
2
. . . a
n
u
n
.
20 Bộ môn Toán - ĐẠI HỌC THĂNG LONG
1.2. Số nguyên và phép chia
Hệ quả 1.2.22 Điều kiện cần và đủ để UCLN a
1
, a
2
, . . . , a
n
1 là tồn tại
những số nguyên u
1
, u
2
, . . . , u
n
sao cho 1 a

1
u
1
a
2
u
2
. . . a
n
u
n
.
Hệ quả 1.2.23 Với mọi số nguyên dương k ta có
UCLN k.a
1
, k.a
2
, . . . , k.a
n
k . UCLN a
1
, a
2
, . . . , a
n
.
Hệ quả 1.2.24 Nếu c là ước chung của a
1
, a
2

, . . . , a
n
thì ta có
UCLN
a
1
c
,
a
2
c
, . . . ,
a
n
c
UCLN a
1
, a
2
, . . . , a
n
c
.
Hệ quả 1.2.25 Cần và đủ để một ước chung dương d của a
1
, a
2
, . . . , a
n


UCLN a
1
, a
2
, . . . , a
n

a
1
d
,
a
2
d
, . . . ,
a
n
d
nguyên tố cùng nhau.
Một số tính chất của ước số chung lớn nhất
Tính chất 1.2.26 Nếu UCLN a, b 1 và b ac thì b c.
Chứng minh: Vì UCLN a, b 1 suy ra tồn tại x, y Z sao cho ax by
1. Từ đó ac.x bc.y c. Do b ac nên b acx bcy tức là b c.
Tính chất 1.2.27 Nếu UCLN a, b 1 và c là một số nguyên tùy ý thì
UCLN ac, b UCLN c, b .
Chứng minh: Ta sẽ chứng minh tập các ước chung của ac và b trùng với tập
các ước chung của b và c.
Thật vậy, giả sử x Z và x ac, x b. Khi đó x ac và x bc hay
x UCLN ac, bc c. UCLN a, b c. Vậy ta có x b và x c.
Ngược lại, giả sử x Z , x b và x c thì hiển nhiên ta có x b và

x ac.
Tính chất 1.2.28 Nếu UCLN a, b 1 và UCLN a, c 1 thì
UCLN a, bc 1.
Chứng minh: Áp dụng tính chất trên, UCLN a, b 1 nên ta có
UCLN a, bc UCLN a, c 1.
Tính chất 1.2.29 Nếu a, b, c Z sao cho a bq c (q Z ) thì
UCLN a, b UCLN b, c .
Bộ môn Toán - ĐẠI HỌC THĂNG LONG 21
Chương 1. Thuật toán, Số nguyên, Trường hữu hạn, Đa thức
Chứng minh: Thật vậy, mọi ước chung của a và b đều là ước của c a bq
nên cũng là ước chung của b và c. Ngược lại, mọi ước chung của b và c
cũng đều là ước của a bq c nên cũng đều là ước của a và b. Vậy
UCLN a, b UCLN b, c .
Cách tìm ước số chung lớn nhất
Trước tiên ta xét bài toán tìm ước chung lớn nhất của hai số nguyên a và b
với giả thiết rằng a b 0.
a) Trường hợp b chia hết a: Trong trường hợp này dễ dàng nhận thấy
UCLN a, b b.
b) Trường hợp b không chia hết a: Theo định lí thuật toán chia, ta có
a bq
0
r
1
0 r
1
b;
b r
1
q
1

r
2
0 r
2
r
1
;
r
1
r
2
q
2
r
3
0 r
3
r
2
;
. . .
r
n 2
r
n 1
q
n 1
r
n
0 r

n
r
n 1
;
r
n 1
r
n
q
n
.
Chú ý rằng số các dòng trên (các phép chia) là hữu hạn và kết thúc bằng
số dư không (dòng cuối cùng) vì dãy b, r
1
, r
2
, . . . là dãy những số tự nhiên
giảm thực sự nên ta có không quá b phép chia. Theo tính chất
1.2.29 ta có
UCLN a, b UCLN b, r
1
. . . UCLN r
n 1
, r
n
. Vì r
n 1
r
n
q

n
nên UCLN a, b UCLN r
n 1
, r
n
r
n
. Cách tìm ước chung lớn
nhất của hai số a và b nói trên được gọi là thuật toán Euclid.
Ví dụ 1.2.30 Hãy tìm UCLN 924, 360 .
Lời giải: Thực hiện phép chia trên hai số đã cho ta được:
924 360.2 204,
360 204.1 156,
204 156.1 48,
156 48.3 12,
48 12.4.
Số dư khác không cuối cùng ở đây là 12. Vậy UCLN 924, 360 12.
22 Bộ môn Toán - ĐẠI HỌC THĂNG LONG

×