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ườ
Trang 1Bà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
Trang 2Mụ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
Trang 32.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
Trang 4Chươ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ầnlượ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
a1, a2, , 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ếtbà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
Trang 5thườ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ố a1, a2, , a nbấ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 (a1) của dãy Phần tử đang
duyệt cũng chính là a1 Ta hiểu rằng giá trị cực đại tạm thời là giá trị lớnnhấ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êngiá 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
đượ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 a1, a2, , a n.
Đầu vào: Dãy hữu hạn a1, a2, , a n.
Đầu ra: Giá trị lớn nhất M maxta1, a2, , a nu.
Trang 6a 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ậttoá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ủakhá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 Khinó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ướctrô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:
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ý”
Trang 7(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ùngmột kết quả Chẳng hạn thuật toán1 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
a1, a2, , 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ớpbà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 trongmột miền xác định và luôn luôn dẫn đến kết quả mong muốn Trong ví dụ thuậttoán1 tìm số lớn nhất ở trên, ta sẽ luôn có số lớn nhất của dãy a1, a2, , a n
cho dù n và bản thân các giá trị a1, a2, , 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 đầuvà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ữngthuậ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ướcthuật toán phải dừng và cho kết quả mong muốn Ta chú ý rằng bằng phép chạythử 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ậttoán chứ không khẳng định được tính đúng đắn của thật toán Muốn khẳng địnhtính đúng đắn của thuật toán thì ta phải tiến hành chứng minh Có thể và nênchứ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ủathuậ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
Trang 8Bà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 a1, a2, , 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 a1 Nếu
x a1 thì kết quả trả về là vị trí 1 Khi x a1 thì ta so sánh x với a2 Nếu
x a2 thì kết quả trả về là vị trí 2 Khi x a2 thì ta so sánh x với a3 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 a1, a2, , 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.
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í t1 n
2 u) 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
Trang 9Ví 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: a8 10 Vì 19 ¡ a8 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: a12 16 Vì
19 ¡ a12 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: a14 19 Vì
19 a14 19 nên vị trí xuất hiện của 19 là 14.
lGiả mã của thuật toán tìm kiếm nhị phân được trình bày trong thuật toán3
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 a1, a2, , 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.
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ó
Trang 10khả 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ồiqua đó, 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ếunhư 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ứ
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.
gọi là đi trước (nhỏ hơn) bộ số b1, b2, , b k pb i P tx1, x2, x3, , x nuq
theo thứ tự từ điển nếu có số m p1 ¤ m ¤ kq để a1 b1, a2 b2, ,
a m1 b m1, a m b m
Ví dụ 1.1.7 Liệt kê tất cả các hoán vị của tập t1, 2, 3, , nu 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, pn 1q, , 1 Giả sử ta đã có hoán vị cho trước a1, a2, , a n (không phải là hoán vị cuối
Trang 11cù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 a1, a2, , a j1, 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 k1, a k 1 , , a n)
là những hoán vị đi sau hoán vị a1, a2, , 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 t1, 2, , nu đi trước hoán vị dạng
a1, a2, , a j1, a k , b j 1 , , b n nói trên mà lại đi sau hoán vị
a1, a2, , 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
a1, a2, , a j1, a k , b j 1 , , b n (trong đó b j 1 , , b n là hoán vị nào
là hoán vị kế tiếp hoán vị đã cho
Với hoán vị 3, 6, 2, 5, 4, 1 đưa ra ở trên thì hoán vị liền sau là 3, 6, 4, 1, 2, 5.
lCác qui tắc sau cho phép ta xây dựng hoán vị kế tiếp của hoán vị
Trang 12Thuật toán 5 Sinh hoán vị kế tiếp.
Đầu vào: Hoán vị hiện tại a1, a2, , a n n, n 1, , 2, 1.
Đầu ra: Hoán vị liền sau theo thứ tự từ điển.
15: Hoán vị mới liền sau hoán vị đã cho theo thứ tự từ điển là a1, a2, , a n.
Các qui tắc trên được thể hiện thông qua thuật toán5dướ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 0looomooon
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
Thuật toán6là biểu diễn dạng giả mã của qui tắc sinh xâu nhị phân kế tiếp theothứ tự từ điển
Trang 13Thuậ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 b1b2 b n 11 1looomooon
6: Xâu nhị phân mới liền sau xâu nhị phân đã cho theo thứ tự từ điển là b1b2 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 t1, 2, , nu 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ử
a1, a2, , a m (a i P A) thỏa mãn 1 ¤ a1 a2 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 conta1, a2, , a mu
biểu diễn bởi dãy a1, a2, , a m (a i P A) thỏa mãn 1 ¤ a1 a2
a m ¤ n Tập con đầu tiên là t1, 2, , mu và tập con cuối cùng là
tn m 1, n m 2, , nu 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 a1, a2, , 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 t1, 2, 3, 4, 5, 6u đang xét là tập t1, 2, 5, 6u Lùi từ phải qua trái ta thấy a4 6 64 4, a3 5 64 3,
a2 2 6 4 2 Vậy i 2 Ta thay a2 bởi 2 1 3, a3 bởi
2 3 2 1 4 và a4 bởi 2 4 2 1 5 Vậy tập con kế tiếp là
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
Trang 14Thuật toán 7 Sinh tập con m phần tử của tập t1, 2, , nu kế tiếp theo thứ tự từ điển.
Đầu vào: Tập con hiện tạita1, a2 a m u tn m 1, n m 2, nu thỏa mãn
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:
a1.1! a2.2! a n1 pn 1q!
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ố a1, a2, , a n1
đượ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ị p1, p2, , p n của tập t1, 2, , nu Đặ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ị p1, p2, , p n
của tập t1, 2, , nu tương ứng với duy nhất bộ số a1, a2, , a n1 hay số
nguyên 0 ¤ a1.1! a2.2! a n1 pn 1q! ¤ n! 1.
Ví dụ 1.1.11 Hoán vị 1, 2, 3, 4, 5 của tập t1, 2, 3, 4, 5u cho ta a1 0 (không
có số nào nhỏ hơn 2 mà đứng sau 2), a2 0 (không có số nào nhỏ hơn 3 mà
đứng sau 3), a3 0 (không có số nào nhỏ hơn 4 mà đứng sau 4), a4 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.
Trang 15Hoán vị 2, 5, 1, 3, 4 của tập t1, 2, 3, 4, 5u cho ta a1 1 (có số 1 nhỏ hơn
2 mà đứng sau 2), a2 0 (không có số nào nhỏ hơn 3 mà đứng sau 3), a3 0
(không có số nào nhỏ hơn 4 mà đứng sau 4), a4 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 t1, 2, 3, 4, 5u cho ta a1 1 (có số 1 nhỏ hơn
2 mà đứng sau 2), a2 2 (có hai số nhỏ hơn 3 mà đứng sau 3), a3 3 (có ba
số nhỏ hơn 4 mà đứng sau 4), a4 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 t1, 2, , nu 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ố
a1, a2, , a n1 Đặt n vào vị trí còn trống thứ n a n1 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 n1 vị trí trống Điều đó có nghĩa là a n1 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ứ
pn 1q a n2 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 t1, 2, , nu 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án8
1.2 Số nguyên và phép chia
Tập hợp số nguyênZ t0, 1, 2, u 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 đềudự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áiniệ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
Trang 16Thuậ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ị p1, p2, , p ncủa tậpt1, 2, , nu tương ứng với i.
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
29: p1, p2, , p nlà hoán vị củat1, 2, , nu 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ẫntớ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
Trang 17chia 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ó tn
du số nguyên dương không vượt
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 :
Đị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|.
Trang 18Chứng minh:
a) Tính tồn tại: Xét tập M tbx | x P Z , bx ¤ au Hiển nhiên M Z
và M H 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 P Z ) Vì |b| ¥ 1 nên bq |b| ¡ bq và do đó bq |b| R M Mặt khác, bq |b| cũng là bội của b nên ta có:
Đị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 pb 0q khi và chỉ khi số
dư của phép chia a cho b bằng không.
Trang 19Số nguyên tố và Định lí cơ bản của số học
Trong tập hợp số tự nhiênN 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êncá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: t0, 1u, 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 p1 sao cho 1 p1 p Từ đó p1 a và 1 p1 p mâu thuẫn
Đị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 p1, p2, , 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ó:
Trang 20Ví dụ 1.2.11 1960 2 3.5.72.
Đị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ồntạ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à p1, p2, , p n
Xét số tự nhiên a p1p2 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ố p1, p2, , p n kể trên Mâu
Mặt khác, nếu ta đánh số các số nguyên tố theo thứ tự tăng dần p1 2, p2 3,
p3 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 p2 ¤ pq a hay p ¤ ?a là điều cần
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 đếnt?a u 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át?101u 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ố. lThuật toán9 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
Trang 21Thuậ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 b0, b1.
5: m : 0, p1 : 2.
6: Trong khi p m 1 ¤ t?Au 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).
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 p1, p2, , 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ậpdà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án11
Ướ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
a1, a2, , 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 a1, a2, , a n
(không đồng thời bằng không) được gọi là ước chung lớn nhất của
a1, a2, , a n Kí hiệu d UCLNpa1, a2, , a n q.
Trang 22Thuậ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.
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 a1, a2, , a n thì ta nói
a1, a2, , 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 a1, a2, , a n là
nguyên tố với nhau từng đôi một.
Ví dụ 1.2.19 UCLNp36, 64, 40q 4, UCLNp32, 56q 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
a1, a2, , 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ố a1, a2, , 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 a1, a2, , 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ừ a1, a2, , 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 a1, a2, , a n Khi đó
c chia hết UCLN pa1, a2, , a n q Ngược lại, nếu c là ước của
UCLNpa1, a2, , a n q thì c là ước chung của a1, a2, , a n
Chứng minh: Xét tập hợp
M ta1x1 a2x2 a n x n | x i P Z , @i 1, 2, , nu.
Trang 23Thuậ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 P N , bảng p1, p2, , p ktấ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
Ta sẽ chứng minh d UCLNpa1, a2, , a n q Trước hết ta có d
x, @x a1x1 a2x2 a n x n P M Thật vậy, theo định lí thuật toán chia x dq r, 0 ¤ r d, r, q P Z Do đó
r x dq a1px1 u1q q a2px2 u2q q a n px n u n qq
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 P Z , nghĩa là d x, @x P M Vì a k a1.0
a k1.0 1.a k a k 1 0 a n 0 P M nên d a k , k 1, 2, , n Mặt khác, nếu c là ước chung của a1, a2, , a n thì c là ước của
d a1u1 a2u2 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 a1, a2, , a n Vậy
d UCLNpa1, a2, , a nq
Và ta cũng có luôn: c là ước chung của a1, a2, , a n khi và chỉ khi nó là
Hệ quả 1.2.21 Nếu d UCLNpa1, a2, , a n q thì tồn tại những số nguyên
u1, u2, , u n sao cho d a1u1 a2u2 a n u n
Trang 24Hệ quả 1.2.22 Điều kiện cần và đủ để UCLN pa1, a2, , a n q 1 là tồn tại
những số nguyên u1, u2, , u n sao cho 1 a1u1 a2u2 a n u n
Hệ quả 1.2.23 Với mọi số nguyên dương k ta có
UCLNpk.a1, k.a2, , k.a n q k UCLNpa1, a2, , a n q.
Hệ quả 1.2.24 Nếu c là ước chung của a1, a2, , a n thì ta có
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 pa, bq 1 và b ac thì b c.
Chứng minh: Vì UCLNpa, bq 1 suy ra tồn tại x, y P 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. l
Tính chất 1.2.27 Nếu UCLN pa, bq 1 và c là một số nguyên tùy ý thì
UCLNpac, bq UCLNpc, bq.
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 P Z và x ac, x b Khi đó x ac và x bc hay
x UCLNpac, bcq c UCLNpa, bq c Vậy ta có x b và x c Ngược lại, giả sử x P Z , x b và x c thì hiển nhiên ta có x b và
UCLNpa, bcq 1.
Tính chất 1.2.29 Nếu a, b, c P Z sao cho a bq c (q P Z ) thì
UCLNpa, bq UCLNpb, cq.
Trang 25Chứ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
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, r1, r2, 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ó
UCLNpa, bq UCLNpb, r1q UCLNpr n1, r n q Vì r n1
r n q n nên UCLNpa, bq UCLNpr n1, r n q 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.
Trang 26Thuật toán 12 Thuật toán Euclid tìm ước chung lớn nhất của hai số nguyên không âm.
Đầu vào: Hai số nguyên không âm a và b.
Đầu ra: UCLNpa, bq.
1: Trong khi b 0 Thực hiện
2: r : a mod b.
3: a : b.
4: b : r.
5: Kết thúc Trong khi
6: Kết quả trả về chính là giá trị a tại thời điểm này.
Viết dưới dạng giả mã, ta có thuật toán12
Ngoài thuật toán Euclid nói trên, trong nhiều trường hợp, ta cần đến thuậttoán Euclid mở rộng Theo hệ quả1.2.21, nếu d là ước chung lớn nhất của hai
số nguyên a và b thì tồn tại những số nguyên x và y sao cho d a.x b.y.
Thuật toán Euclid mở rộng mà ta đề cập đến dưới đây không những cho ta
ước chung lớn nhất của hai số nguyên a và b mà còn cho ta biểu diễn d
UCLNpa, bq a.x b.y.
Thuật toán 13 Thuật toán Euclid mở rộng.
Đầu vào: Hai số nguyên không âm a và b.
Đầu ra: Bộ bapd, x, yq với d UCLNpa, bq và x, y P Z thỏa mãn d a.x b.y.
9: Kết quả trả về là bộ bapa, x, yq tại thời điểm này.
Ví dụ 1.2.31 Hãy áp dụng thuật toán Euclid mở rộng cho a 63, b 24.
Trang 27B4 Kiểm tra b 9 0, tính q 15 div 9 1, bộ ba pr 6, s
Chứng minh tính đúng đắn cho thuật toán Euclid mở rộng được dành cho các
bạn với gợi ý sau: Vai trò của a, b, r trong thuật toán này giống như vai trò của chúng trong thuật toán Euclid Những giá trị x, y tại mỗi bước luôn thỏa mãn
ahiện tại x.aban đầu y.bban đầu Những giá trị u, v tại mỗi bước luôn thỏa mãn bhiện tại u.aban đầu v.bban đầu Và tương tự, những giá trị s, t tại mỗi bước luôn thỏa mãn rhiện tại s.aban đầu t.bban đầu
Bây giờ ta xét bài toán tìm ước chung lớn nhất của nhiều số Cho n
số nguyên dương a1, a2, , a n Ta đặt d UCLNpa1, a2, , a nq,
d2 UCLNpa1, a2q, d3 UCLNpd2, a3q, , d n UCLNpd n1, a nq
thì khi đó ta có d d n
Thật vậy, ta dễ thấy rằng mọi ước chung của a1, a2, , a n đều là ước
chung của d2, a3, , a n và ngược lại nên ta có
Trang 28Nếu ta biết dạng phân tích tiêu chuẩn của những số a1, a2, , a n thì ta
cũng có qui tắc để tính ước chung lớn nhất của a1, a2, , a nnhư sau:
Định lý 1.2.4 Cho a1, a2, , a n là những số tự nhiên lớn hơn 1 Ước chung lớn nhất của a1, a2, , a n là tích lũy thừa của những thừa số nguyên tố chung
của tất cả những số a1, a2, , a n , mỗi thừa số mang số mũ nhỏ nhất của nó
trong các dạng phân tích tiêu chuẩn của các số a1, a2, , a n đã cho.
Chứng minh: Gọi p1, p2, , p k là các ước nguyên tố phân biệt của ít nhất
trong đó α ij ¥ 0 với i 1, n, j 1, k (α ij ¡ 0 nếu như p j là ước của a i
và α ij 0 trong trường hợp trái lại) Đặt
d p µ1
1 p µ2
2 p µ k
k với µ j mintα 1j , α 2j , , α nj u, j 1, k Khi đó d sẽ là ước chung lớn nhất của a1, a2, , a n
Thật vậy, từ giả thiết về µ j , ta có µ j ¤ α ij , @i 1, n vậy d là ước chung của a1, a2, , a n Mặt khác, giả sử δ là một ước chung nào đó của a1, a2, , a n thì δ phải có dạng δ p β1
1 p β2
2 p β k
k với 0 ¤ β j ¤
α ij , @i 1, n, j 1, k, nghĩa là β j ¤ µ j hay δ là ước của d Vậy ta có
Ví dụ 1.2.33 Với ba số 1960 2 3.5.72, 2352 2 4.3.72, 4004
2 2.7.11.13 thì ta có UCLN p1960, 2352, 4004q 22.7 28.
Bội số chung nhỏ nhất
Định nghĩa 1.2.34 Ta gọi bội chung của những số nguyên a1, a2, , a n một
số nguyên là bội đồng thời của mỗi số đó.
Định nghĩa 1.2.35 Số m nhỏ nhất trong tập hợp các bội chung dương của
những số nguyên a1, a2, , a n được gọi là bội chung nhỏ nhất của
a1, a2, , a n Kí hiệu m BCNNpa1, a2, , a n q.
Nhận xét 1.2.36 Khi ta nói đến bội chung của những số a1, a2, , a n thì đương nhiên ta đã giả thiết các số đó đã khác không.
Định lý 1.2.5 Nếu m BCNNpa1, a2, , a n q thì mọi bội chung của
a1, a2, , a n đều là bội của m.
Trang 29Chứng minh: Giả sử µ là một bội chung của a1, a2, , a n và giả sử µ
mq r, 0 ¤ r m, với q, r P Z Bởi vì a i µ, a i m với mọi i 1, n nên a i r µmq Vậy r là bội chung của a1, a2, , a nvà 0 ¤ r m, kết hợp với m BCNNpa1, a2, , a n q ta có r 0 hay µ là bội của m.
l
Một số tính chất của bội số chung nhỏ nhất
Tính chất 1.2.37 Điều kiện cần và đủ để một bội chung dương m của những số
a1, a2, , a n là bội chung nhỏ nhất của chúng là m
bội chung của a1, a2, , a n và 0 |m
d | m trái với giả thiết m là bội chung nhỏ nhất của các số a1, a2, , a nđã cho
b) Điều kiện đủ: Nếu m
minh m BCNNpa1, a2, , a nq Thật vậy, nếu không như thế, ta
gọi m1 BCNNpa1, a2, , a nq và theo định lí1.2.5, sẽ có số nguyên
Trang 30Chứng minh: Ta dễ thấy k lần bội chung của a1, a2, , a n luôn chia hết
cho ka i với mọi i 1, n Vậy k lần bội chung của a1, a2, , a n luôn
là bội chung của ka1, ka2, , ka n Ngược lại, nếu α là bội chung của
ka1, ka2, , ka nthì α
k sẽ là bội của a i với mọi i 1, n nên α
k là bội chung
của a1, a2, , a n và do đó α bằng k lần bội chung nào đó của a1, a2, , a n
Tóm lại ta có hai tập hợp M k các bội chung của ka1, ka2, , ka n và kM các k lần bội chung của a1, a2, , a n bằng nhau Tất nhiên, số dương nhỏnhất trong hai tập tương ứng bằng nhau hay ta có
Trước hết ta xét bài toán tìm bội chung nhỏ nhất của hai số Cho hai số
nguyên a và b với giả thiết rằng a ¡ 0 và b ¡ 0 Khi đó ta có:
Trang 31Thật vậy, vì tập hợp các bội chung của a1 và a2 trùng với tập hợp các bội
của BCNNpa1, a2q m2 nên tập hợp các bội chung của a1, a2, , a n
trùng với tập hợp các bội chung của m2, a3, , a n Vậy ta có
Trang 32Hệ quả 1.2.42 Nếu a1, a2, , a n nguyên tố cùng nhau từng đôi một thì bội
chung nhỏ nhất của chúng bằng tích a1.a2 a n của chúng.
Hệ quả 1.2.43 Nếu số nguyên x là bội chung của nhiều số a1, a2, , a n
nguyên tố cùng nhau từng đôi một thì x là bội của tích a1.a2 a n
Nếu ta biết dạng phân tích tiêu chuẩn của a1, a2, , a n thì ta cũng có qui
tắc để tính bội chung nhỏ nhất của a1, a2, , a n như sau:
Định lý 1.2.6 Cho a1, a2, , a n là những số nguyên dương Bội chung nhỏ
nhất của a1, a2, , a n là tích lũy thừa của những thừa số nguyên tố chung
và riêng của tất cả những số a1, a2, , a n , mỗi thừa số mang số mũ lớn nhất
của nó trong các dạng phân tích tiêu chuẩn của các số a1, a2, , a n đã cho.
Chứng minh: Gọi p1, p2, , p k là các ước nguyên tố phân biệt của ít nhất
trong đó α ij ¥ 0 với i 1, n, j 1, k (α ij ¡ 0 nếu như p j là ước của a i
và α ij 0 trong trường hợp trái lại) Đặt
m p ρ1
1 p ρ2
2 p ρ k
k với ρ j maxtα 1j , α 2j , , α nj u, j 1, k Khi đó m sẽ là bội chung nhỏ nhất của a1, a2, , a n
Thật vậy, với giả thiết về ρ j , ta có ρ j ¥ α ij , @i 1, n vậy m là bội chung của a1, a2, , a n Mặt khác, giả sử ν là một bội chung nào đó của a1, a2, , a n thì ν phải có dạng ν p γ1
Trang 33Số học đồng dư
Đồng dư thức
Định nghĩa 1.2.45 Cho m là một số tự nhiên khác không Ta nói hai số nguyên
a và b là đồng dư với nhau theo modulo m nếu trong phép chia a và b cho
m ta được cùng một số dư Khi a và b đồng dư với nhau theo modulo m thì
ta viết: a b pmod mq, trái lại ta viết a b pmod mq Biểu thức như trên
được gọi là đồng dư thức.
(iii) Có số nguyên t sao cho a b mt.
Chứng minh: Ta sẽ chứng minh (i) ñ(ii)ñ(iii)ñ(i).
(i) ñ(ii) Theo định nghĩa 1.2.45, ta có a mq1 r và b mq2 r,
b mt mq1 r hay b mpq1 tq r với 0 ¤ r m Vậy số dư của
b khi chia cho m cũng là r, nói khác đi ta có a b pmod mq. l
Tính chất của đồng dư thức
Tính chất 1.2.47 Ta có thể cộng hoặc trừ từng vế một của nhiều đồng dư thức
theo cùng một modulo Cụ thể là nếu có a i b i pmod mq, i 1, k thì ta có
a1 a2 a k b1 b2 b k pmod mq.
Tính chất 1.2.48 Ta có thể nhân từng vế một với nhau của nhiều đồng dư thức
theo cùng một modulo Cụ thể là nếu có a i b i pmod mq, i 1, k thì ta có
a1.a2 a k b1.b2 b k pmod mq.
Trang 34Chứng minh của hai tính chất 1.2.47 và 1.2.48 đơn giản được xem như nhữngbài tập dành cho các bạn Từ hai tính chất này, ta có một số hệ quả sau:
Hệ quả 1.2.49 Ta có thể thêm vào hay bớt đi cùng một số vào hai vế của một
đồng dư thức nghĩa là nếu ta có a b pmod mq thì ta cũng có a c
b c pmod mq với c là một số nguyên tùy ý.
Hệ quả 1.2.50 Ta có thể chuyển vế các số hạng của một đồng dư thức nhưng
phải đổi dấu của số hạng đó, nghĩa là nếu ta có a c b pmod mq thì ta
cũng có a b c pmod mq.
Hệ quả 1.2.51 Ta có thể thêm vào hay bớt đi ở một vế của một đồng dư thức
một bội của modulo, nghĩa là nếu ta có a b pmod mq thì ta cũng có
a km b pmod mq với mọi k P Z
Hệ quả 1.2.52 Ta có thể nhân hai vế của một đồng dư thức với cùng một số
nguyên tùy ý, nghĩa là nếu ta có a b pmod mq thì ta cũng có a.c
b.c pmod mq với mọi c P Z
Hệ quả 1.2.53 Ta có thể nâng lên lũy thừa bậc nguyên dương tùy ý hai vế
của một đồng dư thức, nghĩa là nếu ta có a b pmod mq thì ta cũng có
a n b n pmod mq với mọi n P Z
Tính chất 1.2.54 Ta có thể chia hai vế của một đồng dư thức cho một ước
chung của hai vế, nguyên tố cùng nhau với modulo, nghĩa là nếu ta có a.c
b.c pmod mq và UCLNpc, mq 1 thì ta cũng có a b pmod mq.
Chứng minh: Theo giả thiết a.c b.c pmod mq nên m a.cb.c hay m
c pa bq Do UCLNpc, mq 1 nên m a b nghĩa là a b pmod mq.
l
Tính chất 1.2.55 Ta có thể nhân hai vế và modulo của một đồng dư thức với
cùng một số nguyên dương Cụ thể là nếu ta có a b pmod mq thì với mọi
c P Z ta cũng có a.c b.c pmod m.cq.
Chứng minh: Theo giả thiết a b pmod mq nên có số nguyên t sao cho a
b mt Nhân hai vế với cùng một số nguyên dương c, ta có ac bc mct,
Tính chất 1.2.56 Ta có thể chia hai vế và modulo của một đồng dư thức cho
một ước chung dương của chúng Cụ thể nếu ta có a b pmod mq và
Trang 35Chứng minh: Từ giả thiết δ UCLNpa, b, mq, ta đặt a δa1, b δb1,
m δm1 với a1, b1, m1 P Z Nhưng a b mt, thay vào ta có
δa1 δb1pmod δm1q Chia cả hai vế cho δ ta có a1 b1 m1t hay a
δ b
δ pmodm
Tính chất 1.2.57 Nếu hai số a và b đồng dư với nhau theo nhiều modulo thì
chúng cũng đồng dư với nhau theo modulo là bội chung nhỏ nhất của các
modulo nói trên Cụ thể là nếu a b pmod m i q, @i 1, k, thì ta cũng có
a b pmod BCNNpm1, m2, , m k qq.
Chứng minh: Thật vậy, theo giả thiết a b là bội chung của m1, m2, , m k
nên a b cũng là bội của BCNNpm1, m2, , m k q nghĩa là a
Tính chất 1.2.58 Nếu a và b đồng dư với nhau theo modulo m thì chúng cũng
đồng dư với nhau theo modulo là ước của m Cụ thể là nếu a b pmod mq
và δ m, δ ¡ 0 thì ta cũng có a b pmod δq.
Chứng minh: Theo giả thiết, ta có m a b mà δ m nên δ a b nghĩa
Tính chất 1.2.59 Nếu a và b đồng dư với nhau theo modulo m thì tập hợp các
ước chung của a và m trùng với tập hợp các ước chung của b và m Đặc biệt
ta có UCLN pa, mq UCLNpb, mq.
Chứng minh: Thật vậy, do a b pmod mq nên có số nguyên t sao cho a
b mt Đẳng thức này chứng tỏ các ước chung của a và m cũng là ước chung
của b và m và ngược lại Vậy tập hợp các ước chung của a và m trùng với tập hợp các ước chung của b và m và do đó ta có UCLN pa, mq UCLNpb, mq.
l
Tính chất 1.2.60 Quan hệ đồng dư là quan hệ tương đương trên tập hợp các
số nguyên Z
Chứng minh:
Trang 36a) Tính phản xạ: Với số nguyên a tùy ý ta luôn có: a a 0 m nên
a a pmod mq.
b) Tính đối xứng: Nếu a và b là hai số nguyên sao cho a b pmod mq thì
ta có m a b Khi ấy ta cũng có m b a cho nên b a pmod mq c) Tính bắc cầu: Nếu a, b, c là ba số nguyên thỏa mãn a b pmod mq
và b c pmod mq thì ta có m a b và m b c Khi ấy
m pa bq pb cq hay m a c nghĩa là a c pmod mq.
l
Quan hệ đồng dư modulo m là quan hệ tương đương trên tập số nguyên Z
nên nó phân hoạch tập số nguyên ra thành m lớp rời nhau, mỗi lớp chứa các
số nguyên đồng dư với nhau theo modulo m Tập các lớp này được kí hiệu là
Z {mZ hay Z m và chứa đúng m phần tử Mỗi lớp trong tậpZm có đúng một
số nằm trong đoạn r0, m 1s, cho nên mỗi số nguyên trong đoạn này được
xem là một “đại diện” của lớp Tức là ta có thể coi:
Zm t0, 1, 2, , m 1u.
Từ các tính chất của đồng dư thức, ta có thể tự do thực hiện các phép tính số họccộng “`”, nhân “d” thông thường trên tập Zm:
a ` b pa bq mod m, @a, b P Z m ,
a d b pa.bq mod m, @a, b P Z m
Ví dụ 1.2.61 Phép cộng và nhân trongZ7được cho trong bảng sau:
Trang 37nói rằng x có nghịch đảo theo modulo m (phần tử nghịch đảo trongZm ) là u
và ta kí hiệu phần tử nghịch đảo này là x1 Phần tử nghịch đảo theo modulo
m của x được tìm bằng cách sử dụng thuật toán Euclid mở rộng Tập các phần
tử trongZm mà có nghịch đảo theo modulo m ta kí hiệu làZ
m
Ví dụ 1.2.62 Xét Z9 t0, 1, 2, , 8u Bằng thuật toán Euclid mở rộng,
muốn tìm phần tử nghịch đảo của 7 ta có 1 4.73.9 Vậy 4.7 1 pmod 9q,
hay 71 4 pmod 9q.
Phi - hàm Euler
Định nghĩa 1.2.63 Cho số tự nhiên n khác không, ta gọi φ pnq là số các số tự
nhiên nhỏ hơn n và nguyên tố cùng nhau với n Hàm φ được gọi là phi - hàm
Euler.
Ví dụ 1.2.64 Ta có φ p1q 1, φp2q 1, φp3q 2, φp4q 2, φp5q 4,
φ p6q 2, φp7q 6, φp8q 4, φp9q 6, φp10q 4.
Từ định nghĩa1.2.63, ta có ngay hệ quả trực tiếp:
Hệ quả 1.2.65 Số tự nhiên p là số nguyên tố khi và chỉ khi φ ppq p 1.
Hệ quả 1.2.66 Nếu p là số nguyên tố và r là số tự nhiên khác không thì
φ pp r q p r p r1 p r1pp 1q p rp1 1
p q.
Chứng minh: Từ 0 đến p r 1 có tp r
p u p r1 số chia hết cho p Ngoài các
số đó ra, các số khác còn lại không chia hết cho p và do đó nguyên tố cùng nhau với p r Vậy
φ pp r q p r p r1 p r1pp 1q p rp1 1
p q.
l
Bổ đề 1.2.67 Giả sử a và b là hai số tự nhiên khác không, nguyên tố cùng
nhau Khi đó với mỗi số tự nhiên y cố định cho trước thì trong b số dạng
a.x y px 0, b 1q có φpbq số nguyên tố cùng nhau với b.
Chứng minh: Thật vậy, giả sử r x là số dư của phép chia a.x y cho b Số a.x y nguyên tố cùng nhau với b khi và chỉ khi r x nguyên tố cùng nhau với
b.
Trang 38Mặt khác, khi ta chia b số dạng a.x y px 0, b 1q cho b ta có b số dư
r0, r1, , r b1 thỏa mãn 0 ¤ r x b px 0, b 1q Những số dư này đôi một khác nhau vì nếu giả sử có r i r j pi jq thì pa.i r i q pa.j r jq
a pi jq b (do có hai số dư khi chia cho b bằng nhau) Mà điều này không
thể xảy ra do 0 |i j| b và UCLNpa, bq 1 Vậy ta có
Vì UCLNpa.x y, aq UCLNpy, aq nên các số trong bảng M nguyên
tố cùng nhau với a khi và chỉ khi nó nằm ở cột tương ứng với những giá trị y nguyên tố cùng nhau với a Có tất cả φ paq cột như vậy Trong mỗi cột đó, với giá trị y cụ thể cố định, ta có b số có dạng a.x y, x 0, b 1 Theo bổ đề
1.2.67, cột đó có φ pbq số nguyên tố cùng nhau với b Vậy trong bảng M có tất
cả φ paq.φpbq số nguyên tố cùng nhau với tích ab Vậy ta có điều phải chứng
Trang 39Định lý 1.2.9 (Định lí Euler) Nếu m là một số nguyên dương và a nguyên tố
cùng nhau với m thì a φ pmq 1 pmod mq.
Từ định lí Euler, ta có định lí Fermat nhỏ ứng với trường hợp riêng modulo là
số nguyên tố
Hệ quả 1.2.70 (Định lí Fermat nhỏ) Nếu p là số nguyên tố và a là số nguyên
không chia hết cho p thì a p1 1 pmod pq.
Tất nhiên, từ định lí Euler, nếu UCLNpa, mq 1 thì nghịch đảo theo modulo
m của a là a φ pmq1 Và vì chỉ những a nguyên tố cùng nhau với m mới có nghịch đảo theo modulo m nên số phần tử của Z
m bằng φ pmq.
Biểu diễn số tự nhiên theo các hệ cơ số khác nhau
Kí hiệu số mà chúng ta đang sử dụng được cấu tạo từ mười chữ số
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Mỗi một số tự nhiên được kí hiệu bằng cách ghép các chữ số nói trên lại với nhau Ví dụ số 235 bao gồm ba chữ số 2, 3, 5 Mỗi
chữ số tùy theo vị trí trước sau của chúng trong cấu thành kí hiệu mà mang một
ý nghĩa nhất định: hàng đơn vị, hàng chục, hàng trăm Biểu diễn thành tổng
các lũy thừa của 10, ta có, chẳng hạn 235 2.102 3.101 5.100 Số 10
khi đó gọi là cơ số của hệ kí hiệu và hệ kí hiệu mà chúng ta đang sử dụng phổ
biến hiện nay là hệ thập phân hay hệ cơ số 10.
Tất nhiên, không chỉ số 10 mới có thể trở thành cơ số của hệ kí hiệu Trong nhiều trường hợp, việc sử dụng các cơ số khác 10 sẽ thuận tiện hơn Đặc biệt là
hệ cơ số 2, hệ cơ số 8 và hệ cơ số 16 thường được sử dụng trong các máy tính.
Trang 40Thực tế, ta có thể sử dụng một số nguyên dương bất kì lớn hơn 1 làm cơ số để
biểu diễn các số tự nhiên Điều này được phát biểu (không chứng minh) trongđịnh lí sau:
Định lý 1.2.10 (Định lí khai triển theo hệ cơ số) Cho b là một số nguyên
dương lớn hơn 1 Khi đó nếu n là một số nguyên dương, thì nó có thể được
biểu diễn một cách duy nhất dưới dạng:
n a k b k a k1b k1 . a1b1 a0
trong đó k là một số nguyên không âm, a0, a1, , a k là các số nguyên không
âm nhỏ hơn b và a k 0.
Biểu diễn của n được cho trong định lí 1.2.10được gọi là khai triển cơ số
b của n, nó được kí hiệu là a k a k1 a1a 0b
Ví dụ 1.2.71 Khai triển số 235 theo hệ cơ số 8 là 3538vì 235 3.82 5.813.
Nếu chọn 2 làm cơ số ta có khai triển nhị phân Khai triển theo hệ cơ số
8 còn được gọi là khai triển bát phân và khai triển theo hệ cơ số 16 còn được
gọi là khai triển thập lục phân Trong hệ kí hiệu cơ số b ta phải cần đến đúng
b kí hiệu Chẳng hạn hệ cơ số 2 ta sẽ sử dụng các kí hiệu 0 và 1 Hệ cơ số 8 ta
sử dụng tám kí hiệu 0, 1, 2, 3, 4, 5, 6, 7 Riêng hệ cơ số 16 ta sử dụng 16 kí hiệu 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A (biểu diễn số 10), B (số 11), C (số 12), D (số 13), E (số 14), F (số 15).
Ví dụ 1.2.72 Số nguyên 1010111112có khai triển thập phân là: