1. Trang chủ
  2. » Trung học cơ sở - phổ thông

So hoc thuat toan P1

40 2 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 40
Dung lượng 504,23 KB

Nội dung

Trong nh÷ng phÇn tiÕp theo cña cuèn s¸ch, ta sÏ t×m hiÓu nhiÒu thuËt to¸n ®Ó lµm viÖc ®ã, còng nh − c¸c øng dông cña nã trong thùc tiÔn... §Þnh lÝ LamÐ..[r]

(1)

Lời nói đầu

Trong năm gần đây, phát triển Tin học làm thay đổi nhiều ngành truyền thống Lí thuyết số (trong sách này, th−ờng dùng từ “Số học”) Nếu nh− tr−ớc thập kỷ 70, số học đ−ợc xem ngành lí thuyết xa rời thực tiễn nhất, ngày nay, nhiều thành tựu số học có ứng dụng trực tiếp vào vấn đề đời sống, nh− thơng tin, mật mã, kĩ thuật máy tính Một ph−ơng h−ớng số học đời phát triển mạnh mẽ: số học thuật tốn Có thể nói, cầu nối số học với tin học Với việc sử dụng rộng rãi máy tính nghiên cứu số học, nhiều ng−ời cho rằng, số học ngày thành khoa học thực nghiệm! Điều thể rõ “thuật toán xác suất” đ−ợc đề cập đến sách

Mục đích sách nhỏ cung cấp cho ng−ời đọc số kiến thức sơ số học thuật tốn Cuốn sách khơng địi hỏi ng−ời đọc kiến thức chuẩn bị lý thuyết số Vì gọi “Nhập mơn thuật tốn vào số học” Điều có nghĩa là, nhiều đ−ờng khác để vào số học, ta chọn đ−ờng thuật toán: định lí, khái niệm số học đ−ợc trình bày với thuật toán xây dựng chúng Trong nhiều tr−ờng hợp, thuật tốn có kèm theo đánh giá sơ độ phức tạp

Cuốn sách nhằm số đối t−ợng rộng rãi: sinh viên, nghiên cứu sinh số học tin học, ng−ời quan tâm đến lí thuyết ứng dụng số học đại Nhiều phần sách có ích cho học sinh lớp chun tốn chuyên tin học

Ch−ơng sách đ−ợc dành để giới thiệu vài định nghĩa lí thuyết thuật tốn Ba ch−ơng trình bày vấn đề sở số học Ch−ơng 5, việc chuẩn bị kiến thức cho phần tiếp theo, có bình luận nhiều vai trò t−ơng tự số đa thức phát triển số học đại

Để ng−ời đọc hình dung phần ứng dụng số học thuật toán, sách dành ch−ơng để nói lí thuyết mật mã Một vài ứng dụng gần lí thuyết đ−ờng cong elliptic vào mật mã đ−ợc trình bày ch−ơng Cũng xem Ch−ơng nhập mơn ngắn sơ cấp vào lí thuyết đ−ờng cong elliptic, lí thuyết phong phú Hình học đại số số học

Cuối ch−ơng có số tập dành cho độc giả muốn đọc sách “một cách tích cực” Một số tập mang tính chất luyện tập tính tốn thực hành, số khác mở rộng lí thuyết Trừ ch−ơng cuối đ−ờng cong elliptic, ch−ơng cịn lại có kèm theo h−ớng dẫn thực hành tính tốn ch−ơng trình MAPLE Phần h−ớng dẫn thực hành Tạ Thị Hoài An biên soạn Cuối sách có phần tự kiểm tra kiến thức dành cho độc giả học giáo trình với trợ giúp máy tính

Do nhiều nguyên nhân khác nhau, sách chắn nhiều thiếu sót Tác giả hy vọng nhận đ−ợc lời phê bình bạn đọc

Hµ néi, 1998 Hµ Huy Khoái

VnMath.Com

(2)

Chơng

thuật toán

Đ1 Định nghĩa.

Cú thể định nghĩa thuật toán theo nhiều cách khác chúng tơi khơng có ý

định trình bày chặt chẽ thuật toán nh− giáo trình logic, mà hiểu khái niệm thuật tốn theo cách thơng th−ờng

Thuật tốn qui tắc để, với liệu ban đầu cho, tìm đ−ợc lời giải sau khoảng thời gian hữu hạn

Để minh hoạ cách ghi thuật tốn, nh− tìm hiểu u cầu đề cho thuật tốn, ta xét ví dụ cụ thể sau

Cho n X[1], X[2], , X[n], ta cần tìm m j cho m=X[j] = max

1≤ ≤k nX[k], j lớn Điều có nghĩa cần tìm cực đại số cho, số lớn số đạt cực đại

Với mục tiêu tìm số cực đại với số lớn nhất, ta xuất phát từ giá trị X[n]. B−ớc thứ nhất, có số, ta tạm thời xem m=X[n] j=n. Tiếp theo , ta so sánh X[n] với X[n-1]. Trong tr−ờng hợp n-1=0, tức n=1, thuật toán kết thúc

Nếu X[n-1] ≤ X[n] , ta chuyển sang so sánh X[n] với X[n-2] Trong tr−ờng hợp ng−ợc lại, X[n-1] số cực đại hai số xét, ta phải thay đổi m j: đặt m= X[n-1], j=n-1 Với cách làm nh− trên, b−ớc, ta nhận đ−ợc số cực đại số xét B−ớc so sánh với số đứng tr−ớc, kết thúc thuật toán tr−ờng hợp khơng cịn số đứng tr−ớc

Thuật toán mô tả đợc ghi lại nh− sau:

Thuật tốn tìm cực đại

M1 [Bớc xuất phát ] Đặt jn, kn-1, m X[n]

M2 [§· kiĨm tra xong?] NÕu k=0, tht to¸n kÕt thóc M3 [So s¸nh] NÕu X[k]≤m,chun sang M5

M4 [Thay đổi m] Đặt j ← k, m ← X[k] (Tạm thời m cực đại)

M5 [Giảm k] Đặt k k-1, quay M2

Dấu “←“ dùng để phép toán quan trọng phép thay chỗ (replacement)

VnMath.Com

(3)

Trên ta ghi thuật toán ngôn ngữ thông thờng Trong trờng hợp thuật toán đợc viết ngôn ngữ máy tính, ta có chơng trình.

Trong thuật toán có số liệu ban đầu, đợc cho trớc thuật toán bắt đầu làm việc: đầu vào (input) Trong thuật toán M, đầu vào số X[1], X[2], ,

X[n].

Mét tht to¸n cã thĨ có nhiều đầu (ouput) Trong thuật toán M,

đầu m j

Có thể thấy thuật tốn vừa mơ tả thoả mãn u cầu thuật tốn nói chung, là:

1 Tính hữu hạn.Thuật tố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 câu trả lời cho vấn đề đặt Thuật toán M rừ

ràng thoả mÃn điều kiện này, bớc, ta chuyển từ việc xét số sang

số đứng tr−ớc nó, số số hữu hạn

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 Nếu ng−ời đọc, thuật toán M ch−a thoả mãn điều kiện lỗi ng−ời viết!

Ngoài yếu tố kể trên, ta cịn phải xét đến tính hiệu thuật tốn Có nhiều thuật tố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 tốn

khơng đ−ợc xét đến đây, quan tâm thuật tốn sử dụng

thật máy tính

Cng mc tiêu nói trên, ta cịn phải ý đến độ phức tạp thuật toán Độ phức tạp thuật tố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 làm việc Trong sách này, nói đến độ phức tạp thuật tốn, ta hiểu độ phức tạp thời gian

Đ2 Độ phức tạp thuật toán.

D nhiờn, thi gian làm việc máy tính chạy thuật tốn khơng

phụ thuộc vào thuật tốn, mà cịn phụ thuộc vào máy tính đ−ợc 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 Khi tiến hành thuật toán, số phép tính phải thực cịn phụ thuộc vào cỡ toán, tức độ lớn đầu vào Vì thế, độ phức tạp thuật tốn hàm số độ lớn đầu vào Trong ứng dụng thực tiễn, không cần biết xác hàm này, mà cần biết “ cỡ” chúng, tức cần có −ớc l−ợng đủ tốt chúng

Khi làm việc, máy tính th−ờng ghi chữ số bóng đèn “sáng, tắt”:

bóng đèn sáng số 1, bóng đèn tắt số Vì thuận tiện dùng hệ đếm số 2, để biểu diễn số, ta cần dùng hai kí hiệu Một kí hiệu đ−ợc gọi bit (viết tắt chữ “binary digit”) Một số nguyên n biểu diễn k chữ số d−ợc gọi số k-bit Trong ch−ơng tiếp theo, ta thấy rằng, số tự nhiên n số k-bit với k=[log2n] ( dấu[ ] kí hiệu phần nguyên số)

VnMath.Com

(4)

Độ phức tạp thuật toán đợc đo số phép tính bit Phép tÝnh bit lµ mét phÐp tÝnh logic hay sè häc thực số 1-bit

Để −ớc l−ợng độ phức tạp thuật toán, ta dùng khái niệm bậc O-lớn.

Định nghĩa 1.1: 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), và viết f(n)=O(g(n)) f=O(g), tồn số C >0 cho với n đủ lớn, hàm f(n) g(n) d−ơng, đồng thời

f(n) < Cg(n).

VÝ dô 1) Giả sử f(n) đa thức; f(n)=adn

d + a d-1n

d-1 + +a 1n+a0,

trong ad > Dễ chứng minh f(n)=O(n

d).

2) NÕu f1(n)=O(g(n)), f2(n)=O(g(n)) th× f1+f2=O(g).

3) NÕu f1=O(g1), f2=O(g2), f1.f2=O(g1.g2).

4) Nếu tồn giới hạn hữu hạn

lim n

f n g n

( ) ( ) th× f=O(g).

5)Víi mäi sè ε>0, log n=O(nε).

Định nghĩa 1.2. Một thuật tốn đ−ợc gọi có độ phức tạp đa thức, có thời gian đa thức, số phép tính cần thiết thực thuật tốn khơng v−ợt q

O (logd n), n độ lớn đầu vào, d số nguyờn dng no ú

Nói cách khác, đầu vào số k-bit thời gian thực thuật toán O(kd),

tức tơng đơng víi mét ®a thøc cđa k

Các thuật tốn với thời gian O(nα), α>0, đ−ợc gọi thuật toán với độ phức tạp mũ, thời gian mũ.

Chú ý rằng, thuật toán có độ phức tạp O(g), nói độ phức tạp O(h) với hàm h > g Tuy nhiên, ta ln ln cố gắng tìm −ớc l−ợng tốt đ−ợc để tránh hiểu sai độ phức tạp thực thuật toán

Cũng có thuật tốn có độ phức tạp trung gian đa thức mũ Ta th−ờng

gọi thuật tốn d−ới mũ Chẳng hạn, thuật tốn nhanh đ−ợc biết để phân tích số nguyên n ra thừa số thuật toán có độ phức tạp

exp( log log logn n)

Khi giải tốn, khơng ta cố gắng tìm thuật tốn đó, mà cịn muốn tìm thuật tốn “ tốt nhất” Đánh giá độ phức tạp cách để phân tích, so sánh tìm thuật tốn tối −u Tuy nhiên, độ phức tạp tiêu chuẩn để đánh giá thuật tốn Có thuật tốn, lí thuyết

thì có độ phức tạp cao thuật toán khác, nh−ng sử dụng lại có kết

VnMath.Com

(5)

(gần đúng) nhanh nhiều Điều tuỳ thuộc toán cụ thể, mục tiêu cụ thể, kinh nghiệm ng−ời sử dụng

Chúng ta cần l−u ý thêm điểm sau Mặc dù định nghĩa thuật toán mà chúng

ta đ−a ch−a phải chặt chẽ, “cứng nhắc “ ứng dụng thực tế! Bởi vậy, cịn cần đến thuật tốn “xác suất “, tức thuật toán phụ thuộc vào hay nhiều tham số ngẫu nhiên Những “thuật toán” này, ngun tắc khơng đ−ợc gọi thuật tốn, chúng có thể, với xác suất bé, khơng kết thúc Tuy nhiên, thực nghiệm rằng, thuật tốn xác suất th−ờng

h÷u hiƯu thuật toán không xác suất Thậm chí, nhiều trờng hợp,

chỉ có thuật toán nh sử dụng đợc

Khi làm việc với thuật toán xác suất, ta thờng hay phải sử dụng số ngẫu

nhiên Khái niệm chọn số ngẫu nhiên cần đợc xác hoá Th−êng th×

ng−ời ta sử dụng “máy” sản xuất số giả ngẫu nhiên Tuy nhiên,

cuốn sách này, không đề cập đến vấn đề nói trên, mà lần nói đến việc chọn số ngẫu nhiên, ta hiểu điều thực đ−ợc máy

Cũng cần l−u ý rằng, thuật tốn xác suất, khơng thể nói đến thời

gian tuyệt đối, mà nói đến thời gian hy vọng (expected )

Để hình dung đ−ợc phần “độ phức tạp” thuật toán làm việc với

những số lớn, ta xem bảng d−ới cho khoảng thời gian cần thiết để phân tích

sè nguyªn n thừa số thuật toán nhanh đợc biÕt hiƯn (ta xem m¸y

tính sử dụng vào việc có tốc độ triệu phép tính giõy)

Số chữ số thập phân Sè phÐp tÝnh bit Thêi gian

50 1,4.1010 3,9 giê

75 9,0.1012 104 ngµy

100 2,3.1015 74 năm

200 1,2.1023 3,8.109 năm

300 1,5.1029 4,9.1015 năm

500 1,3.1039 4,2.1025 năm

Từ bảng đây, ta thÊy r»ng, víi mét tht to¸n d−íi mị, thêi gian làm việc

với số nguyên lớn lâu Vì nói chung ngời ta cố gắng tìm

thuật toán đa thức

Lớ thuyết độ phức tạp thuật tốn lí thuyết phong phú Trong sách này, khơng lấy mục tiêu trình bày lí thuyết làm trọng tâm Độc giả quan tâm đến lí thuyết thuật tốn tìm đọc sách phần Tài liệu tham khảo

VnMath.Com

(6)

Ch¬ng

Số nguyên

Đ1 Biểu diễn số nguyên phép tính số học

1.1 HƯ c¬ sè

Mặc dù hầu hầu hết độc giả quen thuộc với cách biểu diễn số nguyên số tuỳ ý, nhắc lại sơ qua vấn đề phần này, để thuận tiện cho việc trình bày thuật tốn số nguyên

Định lí 2.1 Giả sử b số nguyên lớn Khi số nguyên n viết duy d−ới dạng

n=akb k + a

k-1b

k-1 + + a 1b

1 +a 0,

trong aj số nguyên, 0ajk-1, với j=0,1, ,k hệ số ak0

Chøng minh Ta cần thực liên tiếp phép chia n cho b:

n=bq0 +a0, 0a0b-1

Nếu q0 >b, ta tiếp tục chia q0 cho b để đ−ợc

q0=bq1 +a1, 0a1b-1

Tiếp tục q trình đó, ta có:

q1=bq2 +a2, 0a2b-1 q2=bq3 +a3, 0a3b-1

qk-1=b.0 +ak, 0akb-1

Quá trình kết thúc ta cã: n>q0>q1> 0

Chúng dành cho độc giả việc chứng minh n có dạng nh− phát biểu định lí, biểu diễn

Số b nói định lí đ−ợc gọi cơ số biểu diễn Các hệ biểu diễn số 10 t−ơng ứng đ−ợc gọi hệ thập phân nhị phân Các hệ số aj đ−ợc gọi chữ số

Về sau ta dùng bit để chữ số nhị phân

Nếu số nguyên n biểu diễn số bk chữ số, từ chứng minh trên, ta cã :

bk-1nbk

Nh− vËy sè ch÷ số n đợc tính theo công thức:

VnMath.Com

(7)

k=[logb n]+1=[log n / log b]+1,

trong đó, kí hiệu log dùng để logarit số e Trong số tuỳ ý, ta có: k=O(logn)

Để 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 (akak-1 a1a0)b để số n= akb k + a

k-1b

k-1 + + a 1b

1 +a 0,

VÝ dô. 1) Đối với số 1994 hệ thập phân, ta có (1994)10=(11111001010)2

2) Trong máy tính, bên cạnh hƯ c¬ sè 2, ng−êi ta cịng th−êng dïng hƯ số

8 16 Lí chủ yếu việc chuyển số viết số sang số

trong c s đ−ợc thực cách dễ dàng Ví dụ, muốn chuyển số cho

trong c¬ sè sang số 8, ta việc nhóm từ phải sang trái khối chữ số,

chuyn số đ−ợc viết khối sang dạng thập phân Chẳng hạn, số

(1110010100110)2 đ−ợc tách thành nhóm 1,110,010,100,110 Từ ta đ−ợc:

(1110010100110)2=(16246)8

Ta làm t−ơng tự để chuyển 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í

hiu để “chữ số “ từ 10 đến 15

Ta nhắc lại máy tính sử dụng cách viết nhị phân, bit Máy tính

nào có giới hạn độ lớn số đ−a vào tính tốn Giới hạn ú

đợc gọi cỡ từ máy, kí hiƯu qua w Cì tõ th−êng lµ mét l thõa 2, chẳng hạn 235

Để thực phép tính số học với số nguyên lớn cỡ từ, ta làm nh

sau Mun a số n > w vào máy, ta viết n d−ới dạng số w, n đ−ợc biểu diễn số không v−ợt cỡ từ Ví dụ, cỡ từ máy 235,

để đ−a vào số có độ lớn cỡ 2350-1, ta cần dùng 10 số nhỏ nhỏ cỡ từ

máy, cách biểu diễn n số 235 Nh− nói ví dụ 1, việc chuyển

mét sè từ số sang số 235 đợc thực dễ dàng cách nhóm khối

35 chữ số

Từ qui tắc phép tính số học, ta thấy rằng:

1) Để cộng trừ hai số nguyên k bit, ta cần O(k) phép tính bit

2) Để nhân chia hai số k bit theo qui tắc thông thờng, ta cần O(k2) phÐp tÝnh

bit

Trong thập kỉ gần đây, ng−ời ta tìm thuật tốn nhân với độ phức tạp

bÐ h¬n nhiỊu so víi cách nhân thông thòng Điều thú vị là, nhìn

thut toỏn ú phc hn quy tắc nhân thông th−ờng Tuy nhiên, làm việc với số lớn, thuật toán cho phép thực việc nhân hai số với thời gian bé hẳn so với quy tắc thông th−ờng

1.2 Thuật toán nhân nhanh hai số.

Ta sử dụng tính chất đơn giản phép nhân: a=a1+a2, b=b1+b2,

ab=a1b1+a2b2+a2b1+a1b2 Điều đáng ý là, thay cho việc nhân hai số nguyên n bit, ta thực việc nhân số có chữ số nhỏ hơn, với số phép

VnMath.Com

(8)

cộng (đòi hỏi số phép tính bit phép nhân) Thực điều khơng có mới: quan niệm ban đầu, phép nhân a với b phép cộng b lần số a!

Tuy nhiên để có thuật tốn nhân nhanh, ta khơng thể cộng b lần số a, mà phải

tìm đ−ợc cách tối −u để tách b a thành phần nhỏ Những

thuật tốn trình bày d−ới cho số cách để làm việc phân chia nh−

vËy

Gi¶ sư muốn nhân hai số nguyên 2n bit,

a=(a2n-1a2n-2 a1a0)2,

b=(b2n-1b2n-2 b1b0)2.

Ta viÕt a=2nA

1+A0, b=2 nB

1+B0,

A1=(a2n-1a2n-2 an)2, A0=(an-1an-2 a1a0)2,

B1=(b2n-1b2n-2 bn)2, B0=(bn-1bn-2 b1b0)2

Khi ta có:

ab=(22n+2n)A 1B1+2

n(A

1 - A0)+(2 n+1)A

0B0 (1.1)

Nh vậy, việc nhân hai số a,b 2n bit đợc đa việc nhân số n bit, với

các phép cộng, trừ dịch chuyển (nhân số với luỹ thừa bậc n đợc

thực cách dịch số sang trái n vị trí)

Định lí 2.2.Thuật tốn 2.1 có độ phức tạp O(nlog2 3

)

Chứng minh Gọi M(n) số phép tính bit tối đa cần thiết thực nhân hai số nguyên n bit thuật toán 2.1 Từ công thức (1.1) ta cã:

M(2n)3M(n)+Cn,

trong C số không phụ thuộc n Đặt c=max(C,M(2))

Bằng quy nạp, dễ chứng minh đợc

M(2k) c(3k-2k).

Từ ta có

M(n)=M(2log

n) ≤M(2[log

n]+1) ≤c(3[log

n]+1-2[log

n]+1) ≤3c.3[log

n] ≤3c.3log

n=3cnlog

3

Định lí đ−ợc chứng minh

Với thuật toán 2.1, ta thấy rằng, với cách phân chia đơn giản số nguyên

thành hai phần với số chữ số nhau, ta nhận đ−ợc thuật toán giảm đáng

kĨ thêi gian thùc hiƯn phÐp nh©n DÜ nhiên, cách phân chia nh xa với cách

ph©n chia tèi −u

Ta chứng tỏ cách phân chia nh− tổng quát hoá để nhận đ−ợc

những thuật toán nhân với độ phức tạp nhỏ nhiều

VnMath.Com

(9)

Cũng nh− tr−ớc đây, ta kí hiệu qua M(n) số phép tính bit cần thiết để thực phép nhân hai số nguyên n bit Tr−ớc tiên, ta chứng minh công thức sau: với số tự nhiên n, tồn thuật toán cho:

M((r+1)n) (2r+1)M(n)+Cn, (1.2) với C số Nh− vậy, Định lí 2.2 tr−ờng hợp riêng với r=1 Giả sử cần nhân hai số (r+1)n bit:

a=(a(r+1)n-1 a1a0)2, b=(b(r+1)n-1 b1b0)2

Ta tách số a,b thành r+1 số hạng:

a=Ar2 rn

+ +A12 n

+A0

b=Br2rn+ +B 12

n+B 0,

trong đó Aj,Bj số n bit

Ta nhận xét rằng, việc biểu diễn số nguyên d−ới dạng số gần

giống nh− viết số d−ới dạng đa thức, chữ số hệ số đa thức Vì việc nhân hai số thực t−ơng tự nh− việc nhân đa thức Ta xét đa thức sau:

A(x)=Arx r+ +A

1x+A0,

B(x)=Brx r+ +B

1x+B0,

W(x)=A(x)B(x)=W2rx 2r

+ +W1x+W0

Từ định nghĩa đa thức ta đựơc: a=A(2n),b=B(2n), ab= W(2n). Nh− vậy, ta dễ

dµng tÝnh đợc tích ab biết đợc hệ số đa thức W(x).

Công thức (1.2) đợc chứng minh ta tìm đợc thuật toán tính hƯ sè

cđa W(x) mµ chØ sư dơng 2r+1 phép nhân số n bit số phép tÝnh kh¸c víi

độ phức tạp O(n) Điều làm cách tính giá trị đa thc W(x) ti

2r+1 điểm sau đây:

W(0)=A(0)B(0), W(1)=A(1)B(1), , W(2r)=A(2r)B(2r)

Chú ý rằng, số Aj,Bj không thiết số n bit, nh−ng với r cố định, chúng có số chữ số nhiều r+t, với t cố định Dễ thấy rằng, nhân hai số (r+t)-bit với khơng q M(n)+c1n phép tính bit, c1 số (chỉ

cần tách số (n+t)-bit thành hai phần n-bit t-bit, nhận xét rằng, t cố định, việc nhân số t-bit với số n-bit đòi hỏi khơng q cn phép tính bit)

Khi có giá trị W(j),(j=0,1, 2r), ta tìm đ−ợc đa thức W(x) theo công thức Lagrange:

W(x)=∑( )−1

2 j r

j=0

W(j)x(x -1) (x - j + 1)(x - j -1) (x - 2r)

j!(2r - j)!

VnMath.Com

(10)

Nh− vậy, hệ số W(x) tổ hợp tuyến tính (với hệ số khơng phụ thuộc n) giá trị W(j), đó, tính đựoc O(n) phép tính bit

Ta chứng minh đ−ợc công thức sau:

M((r+1)n) (2r+1)M(n)+Cn

Lập luận t−ơng tự nh− chứng minh định lí 2.1 ta có:

M(n) ≤C3n log

r+1 (2r+1)

<C3n 1+log

r+1 2

Với ε >0 bé tuỳ ý, thừa số có số chữ số lớn, ta chọn r đủ lớn cho logr+12<ε Ta có định lí sau:

Định lí 2.3.Với ε>0, tồn thuật tốn nhân cho số phép tính bit M(n) cần thiết để nhân hai số n bit thoả mãn bất đẳng thức

M(n)<C(ε)n1+ε,

với số C(ε) độc lập với n

Nhận xét Có thể chứng minh đ−ợc rằng, với cách chọn r “đủ tốt”, ta có thuật toán nhân hai số n-bit cho

M(n)=O(nlog2nloglog2n)

Chứng minh định lí khơng khó, nh−ng dài (xem [Kr])

Đ2 Số nguyên tố.

Định nghĩa 2.4. 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ố

đợc gọi là hợp số

Dễ chứng minh đợc rằng, số số nguyên tố vô hạn (Bài tập 2.14)

Nh ta thấy ch−ơng tiếp theo, toán xác định số cho tr−ớc có phải số ngun tố hay khơng có nhiều ứng dụng thực tiễn Đối với số nhỏ, tốn dĩ nhiên khơng có khó Tuy nhiên, làm việc với số lớn, ta cần phải tìm thuật tốn hữu hiệu, nghĩa thực đ−ợc máy

tính khoảng thời gian chấp nhận đ−ợc Khi nói đến “những số lớn”, ta

th−ờng hiểu số nguyên d−ơng có khoảng 100 chữ số thập phân trở lên Để tìm thuật tốn xác định nhanh số có phải số ngun tố hay

kh«ng, ta cần hiểu sâu sắc tính chất số nguyên tố Trong chơng này, ta

vào tính chất

nh lớ sau õy cho thuật toán đơn giản để xác định số nguyên tố

Định lí 2.5 Mọi hợp số n có −ớc nguyên tố nhỏ n

VnMath.Com

(11)

Thật vậy, n hợp số nên ta viết n=ab, a b số nguyên với 1<ab<n Rõ ràng ta phải có a b khơng v−ợt n, giả sử

a Ước nguyên tố a đồng thời −ớc nguyên tố n

Từ định lí trên, ta có thuật tốn sau để tìm số nguyên tố nhỏ số n cho tr−ớc

Sàng Eratosthenes Tr−ớc tiên, ta viết dãy số tự nhiên từ đến n Trong dãy gạch số 1, khơng phải số ngun tố Số nguyên tố dãy 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 lại số chia hết cho Tiếp tục nh− thế, ta gạch khỏi dãy số chia hết cho số

nguyên tố bé n Theo định lí trên, số lại dãy tất số

nguyên tố không v−ợt n. Thật vậy, hợp số không v−ợt n, theo định lí

trên, phải có −ớc ngun tố nhỏ n, bị gạch khỏi dãy số

một b−ớc thuật tốn

Sàng Eratosthenes, mặc ta thuật toán xác định số nguyên tố không v−ợt

quá số cho tr−ớc, đ−ợc sử dụng để xác định xem số cho có phải số ngun tố hay khơng Ngun nhân thuật tốn có độ phức tạp q 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

Ta xét sơ qua độ phức tạp thuật tốn nói Với số thực d−ơng x

cho tr−ớc ta kí hiệu π(x) số số ngun tố khơng v−ợt q x Khi đó, theo định lí Hadamard-Valée-Poussin ta có:

lim ( ) / log

x x

x x

→∞π =

Nh vậy, số số nguyên tố không vợt n vào khoảng

n/log n=2 n/logn. §Ĩ chia n cho m, ta cÇn O(log2n log2m) phÐp tÝnh bit Nh−

vậy, số phép tính bit cần thiết để kiểm tra n có phải số ngun tố hay khơng (2 n/logn)(Clog2n)=C n( ta dùng −ớc l−ợng sơ l−ợc log2 m ≥1) Nh− vậy, n vào cỡ khoảng 100 chữ số thập phân, số phép tính bit phải dựng

sẽ vào cỡ 1050 Với máy tính thùc hiƯn mét triƯu phÐp tÝnh mét gi©y,

thời gian cần thiết vào khoảng 3,1.1036 năm!

Ta kết thúc tiết định lý quan trọng sau đây, th−ờng đ−ợc gọi định lý bản số học

Định lí 2.6.Mọi số nguyên tố lớn phân tích đ−ợc cách thành tích số nguyên tố, thừa số đ−ợc viết với thứ tự không giảm

Chứng minh Giả sử tồn số không viết đ−ợc thành tích số nguyên tố Gọi n số bé số Nh− vậy, n phải hợp số, n=a.b, với a, b<n Do định nghĩa n số a b phân tích đ−ợc thành tích số ngun tố, nghĩa n

cịng phân tích đợc Mâu thuẫn với giả thiết

Còn phải chứng minh phân tích Giả sử ta cã:

VnMath.Com

(12)

n=p1 p2 ps=q1q2 qr,

trong pi, qj số nguyên tố Giản −ớc số nguyên tố có mặt hai vế, ta đ−ợc đẳng thức

pi1pi2 piu=qj1qj2 qjv,,

trong khơng có số nguyên tố có mặt hai vế Nh− vậy, vế trái chia hết cho

qj1, phải tồn thừa số tích chia hết cho qj1: điều vơ lý, tích số ngun tố khác với qj1

Ph©n tích nh số nguyên đợc gọi phân tích thừa số nguyên tố Khi

n là số lớn, việc kiểm tra xem n số nguyên tố hay hợp số, hợp số tìm phân tích thừa số ngun tố, tốn khó khăn Trong phần sách, ta tìm hiểu nhiều thuật tốn để làm việc đó, nh− ứng dụng thực tiễn

Đ3 Thuật toán Euclid.

Mt thuật toán lâu đời tốn học thuật tốn Euclid Thuật tốn cho phép xác định −ớc chung lớn hai số ngun cho tr−ớc

Khi trình bày thuật tốn Euclid, ta nhắc lại sơ qua khái niệm đồng d− Những tính

chất cần dùng đồng d− tính chất −ớc chung lớn đ−ợc cho tập ch−ơng

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 ( ta dùng cách viết m | (a-b)) Để quan hệ đồng d−, ta dùng ký hiệu ab (mod m)

Nh− vËy, ab (mod m) vµ chØ tồn số nguyên k cho a=b+km

Quan hệ đồng d− quan hệ số học, ta gặp th−ờng xuyên phần sách Trong thuật toán Euclid, ta dùng quan hệ để diễn đạt ngắn gọn phần d− phộp chia

Thuật toán sau cho phép tính ớc chung lớn (ƯCLN) d hai số nguyên

không âm a b (ký hiệu d=(a,b))

Tht to¸n Euclid

E1 [KÕt thóc?] NÕu b=0, in a kết thúc thuật toán E2 [Chia Euclid] Đặt mod b, ab, br quay b−íc

VÝ dơ: tÝnh d=(24,63) b»ng tht to¸n Euclid

Ta cã: d=(24,63) = (15,24)=(9,15)=(6,9)=(3,6)=(0,3)=3

VnMath.Com

(13)

Định lý sau vừa cho ta chứng minh tính đắn thuật tốn Euclid, vừa cho −ớc l−ợng độ phức tạp

Định lí Lamé.Số phép chia cần thiết để tìm ƯCLN hai số nguyên d−ơng thuật tốn Euclid khơng v−ợt q lần số chữ số thập phân số bé hai số ó cho

Chứng minh Giả sử a>b hai số nguyên dơng cho trớc Bằng thuật toán Euclid, ta cã: a=r0, b=r1 vµ:

r0=r1q1+r2, 0r2<r1 r1=r2q2+r3, 0r3<r2

rn-2=rn-1qn-1+rn, 0rn<rn-1

rn-1=rnqn

Nh− vậy, ta làm n phép chia Trong phép chia đó, ta có: q1, q2, ,qn-11, qn2, rn <rn-1 Từ suy ra:

rn1=f2, rn-12rn2f2=f3

rn-2rn-1+ rnf3+f2=f4

rn-3rn-2+ rn-1f4+f5=f6

r2r3+ r4fn-1+fn-2=fn

b=r1r2+ r3fn+fn-1=fn+1

Chú ý rằng, dÃy số {fn} nhận đợc chÝnh lµ d·y sè Fibonaci quen thuéc sè häc Đối với dÃy số này, quy nạp, dễ chứng minh ớc lợng sau đây:

fn>(

1

2

+

)n-2

Từ bất đẳng thức bfn+1 ta có:

log10b≥ (n-1)log10(

1

2

+

)>(n-1)/5

Định lí ®−ỵc chøng minh

Hệ 2.6.Giả sử a<b, số phép tính bit cần thiết để thực thuật toán Euclid O((log2a)3)

VnMath.Com

(14)

ThËt vËy, sè phÐp chia phải làm O(log2a), phép chia cần O((log2a)

) phÐp tÝnh bit

Thuật toán Euclid, đời hàng nghìn năm, thuật tốn tốt để

tìm ƯCLN hai số nguyên cho tr−ớc! Cho đến năm 1967, J.Stein xây dựng đ−ợc

một thuật toán thuận tiện để tìm ƯCLN tr−ờng hợp số cho đ−ợc vit

dới dạng nhị phân Ưu điểm chủ yếu thuật toán ta không cần làm

phép tính chia (thực ta có làm phép chia số chẵn cho 2, nh−ng số phép dịch chuyển số cho sang phải vị trí) Thuật tốn dựa nhận xét đơn giản sau (xem phần tập cuối ch−ơng):

1) Nếu a,b số chẵn, (a,b)=2(a/2,b/2) 2) Nếu a chẵn, b lẻ, (a,b)=(a/2,b).

3) Nếu a,b lẻ a-b chẵn |a-b|<max(a,b) 4) (a,b)=(a-b,b)

Thuật tốn đ−ợc mơ tả nh− sau ( dành phần chứng minh cho độc giả)

Thuật toán tìm ƯCLN hai số nguyên dơnga,b.

E’1 (Tìm luỹ thừa 2) Đặt k←0 lập liên tiếp phép tính sau hai số a, b lẻ: đặt k←k+1, a←a/2, b←b/2

E’2 (Xuất phát) (ở b−ớc xuất phát này, a, b đ−ợc chia cho 2k

, có hai số lẻ) Nếu a lẻ, đặt t←-b chuyển sang E’4 Nếu ng−ợc lại, đặt t←a

E’3 (Chia đôi t) (Tại thời điểm này, t chẵn, khác 0) Đặt t←t/2

E4 (t có chẵn hay không?) Nếu t chẵn quay vÒ E’3

E’5 (Sắp xếp lại max(a,b)) Nếu t>0, đặt a←t; ng−ợc lại, đặt b←-t Nh− vậy, số lớn hai số đ−ợc thay |t|

E6 (Trừ) Đặt ta-b Nếu t0, quay lại E3 Nếu ngợc lại thuật toán kết thúc in a.2k

Ngồi thuật tốn Euclid nói trên, nhiều tr−ờng hợp, ta cần đến thuật toán

Euclid mở rộng Thuật toán cho ta thuật toán tìm ƯCLN hai số

a, b, mà cho ta biểu diễn d=(a,b) dới dạng tổ hợp tun tÝnh cđa a, b:

d=ma+nb, m, n số nguyên Tr−ớc hết, ta chứng minh bổ đề sau:

Bổ đề 2.7: ƯCLN số nguyên a b số d d−ơng nhỏ biểu diễn đ−ợc d−ới dạng tổ hợp tuyến tính a b

VnMath.Com

(15)

Thật vậy, giả sử d số nguyên d−ơng nhỏ biểu diễn đ−ợc d−ới dạng d=ma+nb Ta chứng tỏ d −ớc chung a b Xét phép chia a=dq+r, 0r<d Rõ ràng r tổ hợp tuyến tính a b, nên do d số nguyên d−ơng nhỏ có tính chất đó, r=0 T−ơng tự, d −ớc b Dễ thấy rằng, −ớc chung khác a b −ớc d: d chính −ớc chung lớn

Khi cho hai số a, b, để tìm biểu diễn d nh− bổ đề, ta th−ờng nh− sau: viết a=bv+q, 0q<b Sau đó,lại viết b=uq+r=u(a-bv)+r, 0r<q Tiếp tục q trình đó, số d−q, r giảm dần nên ta thu đ−ợc biểu diễn cần thiết Điều vừa nói đ−ợc

thể thuật toán sau đây, mà chứng minh chặt chẽ đ−ợc dành cho độc giả

ThuËt toán Euclid mở rộng.

Cho hai số nguyên không âm u, v, tìm (u1,u2,u3) cho (u,v)=u3=uu1+vu2 Trong

tính toán, ta thêm vào ẩn phụ (v1,v2,v3), (t1,t2,t3) có bớc

ng thức sau đây:

ut1+vt2=t3, uv1+vv2=v3, uu1+vu2=u3

Ed1.(XuÊt phát) Đặt (u1,u2,u3)(1,0,u), (v1,v2,v3)

(0,1,v)

Ed2 (Kiểm tra v3=0?) NÕu v3=0, tht to¸n kÕt thóc

Ed3 (Chia, trừ) Đặt q← [u3/v3], sau đặt (t1,t2,t3)←(u1,u2,u3)-q(v1,v2,v3), (v1,v2,v3)←(t1,t2,t3) quay b−ớc

VÝ dô Cho a=63, b=24 Dïng tht to¸n Euclid ta cã: - B−íc u1=1, u2=0, u3=63, v1=0, v2=1, v3 =24

- B−íc q=2, u1 =0, u2=1, u3=24, v1=1, v2=-2, v3=15

- B−íc q=1, u1=1, u2=-2, u3=15, v1=-1, v2=3, v3=9

- B−íc q=1, u1=-1, u2=3, u3=9, v1=2, v2=-5, v3=6 - B−íc q=1, u1=2, u2=-5, u3=6, v1=-3, v2=8, v3=3

- B−íc q=2, u1=-3, u2=8, u3=3, v1=8, v2=-21, v3=0

Ta cã biĨu diƠn: 3=(-3)64+8.24

§4 Định lí Trung Quốc phần d:

Gi sử m1,m2, ,mr số nguyên d−ơng nguyên tố cặp Khi hệ

đồng d−:

x1≡a1(mod m1), x2≡a2(mod m2),

VnMath.Com

(16)

xr≡ar(mod mr) Cã nghiƯm nhÊt moduloM=m1m2 mr.

Chøng minh Tr−íc hÕt ta x©y dùng mét nghiƯm cđa hƯ

Gi¶ sư Mk=M/mk= m1m2 mk-1mk+1 mr. Ta biÕt r»ng (Mk,mk)=1 v× (mj,mk)=1 víi mäi

jk Nh− vậy, theo tập 2.18 ta tìm nghịch đảo yk Mk modulo mk,

tøc lµ Mkyk ≡1 (mod mk)

Đặt

x=a1M1y1+ a2M2y2 + + arMryr

Ta thÊy r»ng xak(mod mk) víi mäi k mk|Mj với jk nên Mj0 (mod mk) jk

Nh− vËy, x chÝnh lµ mét nghiƯm cđa hƯ ®ang xÐt

Ta chứng tỏ nghiệm vừa xây dựng modulo M Giả sử x0, x1 hai nghiệm hệ Khi đó, với mỗi k, x0≡x1ak (mod mk), mk| (x0-x1) Theo bi

tập 2.17, M| (x0-x1) Định lí đợc chứng minh

Định lí Trung Quốc phần d liên quan toán tiếng Hàn Tín điểm binh

T−ơng truyền rằng, để kiểm tra quân số, Hàn Tín th−ờng lệnh cho quân sĩ xếp

thành hàng 3, hàng 5, hàng thông báo cho ông số d− Khi biết số d− có sẵn thơng tin gần số qn mình, Hàn Tín dùng định lí để suy số quân xác

Định lí Trung Quốc phần d− đ−ợc sử dụng máy tính lm vic vi nhng

số lớn Để đa số nguyên lớn tuỳ ý vào máy tính làm phép tính số học với

chỳng, ta cần có kĩ thuật đặc biệt Theo định lí Trung quốc phần d−,

cho tr−íc c¸c modun nguyên tố m1,m2, ,mr, số dơng n<M=

m1m2 mr đ−ợc xác định thặng d− d−ơng bé theo

modulo mj víi j=1,2, ,r Gi¶ sư r»ng cì tõ máy 100, nhng ta cần làm

phép tính số học với số nguyên cỡ 106 Trớc tiên ta tìm số nguyên nhỏ

hơn 100, nguyên tố cặp, cho tích chúng vợt 106 Chẳng

hạn, ta cã thÓ lÊy m1=99, m2=98, m3=97, m4=95 Ta chuyÓn số nguyên bé 10

thnh nhng số theo thặng d− d−ơng bé modulo m1,m2,m3,m4 (để làm đ−ợc

điều này, ta phải làm việc với số nguyên lớn! Tuy nhiên điều cần làm lần với input, lần với ouput) Nh− vậy, chẳng hạn để cộng số nguyên, ta cần cộng thặng d− d−ơng bé chúng modulo m1,m2,m3,m4 Sau lại dùng định lí Trung Quốc phần d− để tìm số t−ơng ứng với tổng

VÝ dô. Ta mn tÝnh tỉng x=123684, y=413456 víi mét m¸y tÝnh cì tõ lµ 100 Ta cã:

x≡33(mod 99), 8(mod 98), 9(mod 97), 89(mod 95)

y≡32(mod 99), 92(mod 98), 42(mod 97), 16(mod 95)

Nh− vËy,

x+y≡ 65(mod 99), 2(mod 98), 51(mod 97), 10(mod 95)

VnMath.Com

(17)

Bây giời ta dùng định lí Trung Quốc phần d− để tìm x+y modulo

M=99.98.97.95=89403930 Ta có: M1=M/99=903070, M2=M/98=912288,

M3=M/97=921690, M4=M/95=941094 Ta cần tìm ng−ỵc cđa Mi(mod yi) víi

i=1,2,3,4, tức giải hệ ph−ơng trình đồng d− sau (Bằng thuật chia Euclid): 903070y1≡91y1≡1(mod 99)

912285y2≡3y2≡1(mod 98) 921690y3≡93y3≡1(mod 97)

Ta tìm đợc: y137(mod 99), y238(mod 98), y324(mod 97), y44(mod 95)

Nh− vËy,

x+y=65.903070.37+2.912285.33+51.921690.24+10.941094.4=3397886480

≡537140(mod 89403930)

V× 0<x+y<89403930, ta suy x+y=537140

Rất độc giả cho rằng, cách cộng hai số sử dụng định lí Trung Quốc phần d−

qu¸ phức tạp so với cách cộng thông thờng Tuy nhiên, cÇn chó ý r»ng, vÝ dơ

trên đây, ta làm việc với số nhỏ Khi số cần cộng có độ lớn v−ợt xa cỡ từ máy, quy tắc cộng “thơng th−ờng” khơng cịn áp dụng đ−ợc

Nói chung cỡ từ máy tính luỹ thừa lớn 2, chẳng hạn 235 Nh− vậy, để sử

dụng định lí Trung Quốc phần d−, ta cần số nhỏ 235 ngun tố

tõng cỈp Để tìm số nguyên nh vậy, thuận tiện dùng số dạng 2m-1,

trong ú m số nguyên d−ơng Các phép tính số học với số có dạng nh− t−ơng đối đơn giản dựa vào bổ đề sau

Bổ đề 2.8 Nếu a b số nguyên d−ơng thặng d− d−ơng bé modulo 2b

-1 2a-1 2r-1, r thặng d− d−ơng bé a modulo b

Thật vậy, a=bq+r, r thặng d− d−ơng bé a modulo b, ta có

(2a-1)=(2bq+r-1)=(2b-1)(2b(q-1)+r+ +2b+r+2r)+(2r-1)

Hệ 2.9 Nếu a b số nguyên dơng, ớc chung lớn cđa 2a-1 vµ

2b-1 lµ 2(a,b)-1

Hệ 2.10 Các số nguyên 2a-1 2b-1 nguyên tè cïng vµ chØ a vµ b

nguyªn tè cïng

Chúng tơi dành việc chứng minh hai bổ đề cho độc giả

Ta sử dụng hệ để tìm số nhỏ 235, nguyên tố

từng cặp, cho tích chúng lớn số cho Giả sử ta cần làm phép

tính số học với số nguyên có cỡ 2184 Ta đặt: m

1=2 35-1, m

2=2 34-1, m

3=2 33-1,

m4=2 31

-1, m5=2 29

-1, m6=2 23

-1 Vì số mũ số nguyên tố với cặp, nên theo hệ trên, số chọn nguyên tố với nhsu cặp Ta có tích m1 m2 m3 m4 m5 m6>2

184 B©y giê ta cã thĨ làm phép tính số học với

nhng số cỡ đến 2184

VnMath.Com

(18)

Trong máy tính đại, việc thực nhiều phép tính đ−ợc tiến hành đồng thời Vì việc sử dụng định lí Trung Quốc phần d− nh− lại tiện lợi: thay cho việc làm phép tính với số nguyên lớn, ta làm nhiều phép tính đồng thời với số nguyên bé Điều giảm đáng kể thời gian tính tốn

VnMath.Com

(19)

Thuật toán giải phơng trình đồng d định lí Trung Quốc

Từ chứng minh định lí Trung Quốc phần d−, ta có thuật tốn sau để giải hệ

ph−ơng trình đồng d− x ≡xi (mod mi), mi, 1≤i≤k số nguyên tố với cặp, xi số nguyên cho tr−ớc Trong thuật toán trình bày sau đây,

chúng ta tìm cách để tránh phải làm việc với số lớn nh− Mi aiMi Thuật toán

1 (XuÊt phát) Đặt j2, C11 Hơn ta xếp lại số mi theo thứ tự tăng dần

2 (Tính toán sơ bộ) Đặt pm1m2 mj-1(mod mj) Tính (u,v,d) cho up+vmj=d=UCLN(p,mj) b»ng thuËt to¸n Euclid më réng

Ed Nếu d>0, in thông báo: mi không nguyên tố cặp Nếu ng−ợc lại, đặt Cj←u, j←j+1 chuyển sang b−ớc j≤k

3 (Tính số phụ) Đặt y1x1 mod m1, j=2, ,k tính:

yj(xj-(y1+m1(y2+m2(y3+ +mj-2yj-1) ))Cjmod mj (KÕt thóc) In

x← y1+m1(y2+m2(y3+ +mk-1yk) ), kết thúc thuật toán

5 Mt s ng d c bit.

Định lí Wilson p số nguyên tố (p-1)! -1 (mod p)

Chứng minh Trớc tiên, giả sử p sè nguyªn tè Khi p=2, ta cã (p-1)! ≡1≡-1(mod 2) Bây giả sử p số nguyên tố lớn Theo tập 2.18,

vi mi số nguyên a với 1≤a≤p-1, tồn nghịch đảo a, 1≤a ≤p-1, với

aa ≡1(mod p) Theo bµi tËp 2.13, số số nguyên dơng nhỏ p, chØ cã

p-1 nghịch đảo với Nh− ta nhóm số nguyên từ đến

p-2 thành (p-3)/2 cặp số nguyên, tích cặp đồng d− với modulo p Nh− ta có:

2.3 (p-3)(p-2)≡1 (mod p) Nhân hai vế với p-1 ta đợc:

(p-1)! ≡1.2.3 (p-2)(p-1) ≡1(p-1) ≡-1(mod p)

Ng−ợc lại giả sử p thoả mãn đồng d− phát biểu định lí a −ớc số

p, a<p Khi đó, a | (p-1)! Nh−ng theo giả thiết, p | (p-1)!+1, từ suy a=1,

−ớc chung p và (p-1)! Vậy p số nguyên tố, định lí đ−ợc chứng minh VnMath.Com

(20)

Định lí Wilson đ−ợc dùng để kiểm tra số có phải số nguyên tố hay không Tuy nhiên , dễ thấy rằng, thuật tốn dựa theo định lí Wilson khó sử dụng với số nguyên lớn, số phép tính bit địi hỏi q cao

Để đơn giản, ta gọi công việc xem xét số cho có phải số ngun 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è

Định lí Fermat bé Nếu p số nguyên tố a số không chia hết cho p ap-11(mod p)

Chứng minh Xét p-1 số ngun a, 2a, ,(p-1)a Các số khơng chia hết cho p

và khơng có hai số đồng d− modulo p. Nh− vậy, thặng d− d−ơng bé chúng phải 1, 2, p-1, xếp theo thứ tự Từ ta có:

a.2a (p-1) ≡1 (p-1)≡(p-1)!(mod p) tøc lµ

ap-1(p-1)!1(mod p)

Vì ((p-1)!,p)=1 nên ta có ap-11(mod p)

Hệ 2.11. Nếu p số nguyên tố a số nguyên dơng apa(mod p). Hệ 2.12 Nếu p số nguyên tố a số nguyên không chia hết cho p ap-2

nghch o ca a modulo p

Hệ 2.13 Nếu a b số nguyên dơng, p nguyên tố, p|a nghiệm

ca ng d thc tuyn tính axb(mod p) số nguyên x cho xap-2b(mod p)

Đ6 Số giả nguyên tè.

Theo định lí Fermat, n số nguyên tố b số nguyên tuỳ ý, bn≡b(mod n)

Do tồn số b cho bn/≡b(mod n) n phải hợp số Trong nhiều ứng

dụng , lại cần đến thuật toán để số n số nguyên tố Trong tr−ờng hợp này, ta khơng thể dùng định lí Fermat bé, định lí ng−ợc khơng Tuy nhiên, số nguyên thoả mãn giả thiết định lí Fermat bé “có nhiều khả năng” số nguyên tố! Ta có định nghĩa sau

Định nghĩa 2.14 Giả sử b số nguyên dơng Nếu n hợp số nguyên dơng bn b(mod n) thì n đợc gọi số giả nguyên tè c¬ së b.

Trong tr−ờng hợp (n,b)=1, ta th−ờng dùng định nghĩa t−ơng đ−ơng: bn-1≡ b(mod n) Ví dụ. Số nguyên 561=3.11.17 số giả nguyên tố sở Thật vậy, áp dụng định lí

Fermat bÐ, ta cã 2560=(22)280 ≡1(mod 3), 2560=(210)56 ≡1(mod 11),

2560=(216)35 ≡1(mod 17) Từ suy (bài tập 2.12) 2560 ≡1(mod 561)

VnMath.Com

(21)

Nói chung số giả nguyên tố nhiều so với số nguyên tố Chẳng hạn, có tất 4550525112 số nguyên tố bé 1010, nhng có 14884 số giả nguyên tố

sở khoảng Sự kiện giải thích cách nói trên: Các số thoả mãn định lí Fermat bé có nhiều khả số nguyên tố Tuy nhiên sở tuỳ ý, số số giả nguyên tố vô hạn Chẳng hạn, ta chứng minh điều s

Định lí 2.15. Có vô số số giả nguyên tố sở

Chứng minh Giả sử n là số giả nguyên tố së 2, ta sÏ chøng tá r»ng, m=2n-1

còng số giả nguyên tố sở Theo giả thiết, n là hợp số, chẳng hạn n=dt

(1<d,t<n), 2n-11(mod n) Dễ thấy m hợp số, v× (2d-1) | (2n-1)=m Do n

là giả nguyên tố, tồn k cho 2n-2=kn Ta có 2m-1=2kn, đó,

m=(2n-1)|(2nk-1)=2m-1-1, tøc lµ 2m-1≡1(mod m) Vậy số m giả nguyên tố sở

Nh− vậy, để kiểm tra số có phải số ngun tố hay khơng, tr−ớc tiên ta xem có giả nguyên tố sở hay khơng, sau tiếp tục kiểm tra sở khác Tuy nhiên, tồn số giả nguyên tố với sở, ú l cỏc s Carmichael

Định nghĩa 2.16 Hợp số nguyên n thoả mÃn bn-11(mod n) với số nguyên

dơng b cho (n,b)=1 đợc gọi lµ sè Carmichael

Ví dụ. Số ngun 561=3.11.17 số Carmichael Thật vậy, (b,561)=1 (b,3)=(b,11)=(b,17)=1 Theo định lí Fermat bé, ta có b2≡1(mod 3), b10≡1(mod 11),

b16≡1(mod 17) Do đó, viết 560=2.280=10.56=16.35 ta đ−ợc:

b560=(b2)280≡1(mod 3),

b560=(b10)56≡1(mod 11),

b560=(b16)35≡1(mod 17)

Từ suy (bài tập 2.12): b5601(mod 561)

Giả thuyết sau đợc chứng minh gần ([AGP]): tồn vô hạn số

Carmichael

Định lí sau cho cách tìm số Carmichael

nh lớ 2.17 Nu n=q1q2 qk, qj số nguyên tố khác thoả mãn

(qj-1) |(n-1), th× n lµ sè Carmichael

Thật vậy, giả sử b số nguyên d−ơng, (b,n)=1 Khi đó, (b,qj)=1 với j,

bqj−1 ≡1(modqj)

V× (qj-1) |(n-1) nªn b n-1≡

1(mod qj), đó, b n-1≡

1(mod n)

Phần đảo định lí đúng, nhiên đ−ợc chứng minh dài nên ta

sẽ bỏ qua Độc giả quan tâm tìm đọc [Ro]

Nh− vậy, việc kiểm tra nguyên tố khó khăn gặp phải số Carmicheal Tuy

nhiờn, ta cú thể khắc phục cách sau Nếu gặp đồng d− bn-1≡1(mod n), ta

chuyển sang xét đồng d− b(n 1)/2≡x(mod n) Nếu n số nguyên tố x≡1 x≡-1(mod n), ng−ợc lại n phải hợp số (bài tập 2.22)

VnMath.Com

(22)

VÝ dơ, víi sè Carmicheal bÐ nhÊt 561 ta cã: 5(561-1)/2=5280 ≡67(mod 561) VËy, 561 lµ hỵp sè

Về sau, ta đề cập đến thuật toán kiểm tra nguyên tố đại Trong phần

này, để thấy thêm ứng dụng định lí đồng d− vừa trình bày, ta tìm hiểu vài

thuật toán đơn giản

Định nghĩa 2.18. Giả sử n số nguyên d−ơng lẻ, n-1=2st, s số ngun

khơng âm, t số nguyên d−ơng lẻ Ta nói n trải qua đ−ợc kiểm tra Miller sở b, bt≡1(mod n), b2jt≡-1(mod n), với j đó, 0≤j≤s-1

Ta chứng tỏ rằng, n số nguyên tố n trải qua đợc kiểm tra Miller së b víi mäi sè b cho n|b. Thật vậy, giả sử n-1=2st Đặt xk=b

(n-1)/2k

=b2 s kt

, víi

k=0,1, ,s.n là số nguyên tố nên x0≡1(mod n) Do x1

2≡1(mod n), tức x1≡1(mod n) x1≡-1(mod n) Tiếp tục trình nh− ta đến kết luận rằng, xk≡1(mod n) với k=0,1, ,s, xk≡-1(mod n) với số nguyên k

đó Nh− n trải qua đ−ợc kiểm tra Miller sở b.

Dễ thấy rằng, n trải qua đ−ợc kiểm tra Miller sở b n số giả nguyên tố sở b Ta cú nh ngha sau

Định nghĩa 2.19 n đợc gọi số giả nguyên tố mạnh sở b hợp số trải qua đợc kiểm tra Miller sở b.

Nh vy số giả ngun tố mạnh lại cịn số giả nguyên tố Tuy nhiên, ta có định lớ sau

Định lí 2.20 Tồn vô số số giả nguyên tố mạnh sở 2.

Tht vậy, giả sử n số giả nguyên tố sở Khi đó, 2n-1=nk với số nguyên lẻ k

nào Đặt N=2n-1, ta có

N-1=2n-2=2(2n-1-1)=2nk;

nghĩa n là hợp số Mặt khác,

2(N-1)/2=2nk=(2n)k≡1(mod N)

Vậy với số giả nguyên tố n, ta xây dựng đ−ợc số giả nguyên tố mạnh N số n khác cho ta số N khác nhau: định lí đ−ợc chứng minh, có vơ số giả ngun 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ẻ có sở bé 2047 Nh− vậy, n lẻ n<2047, n là ngun tố trải qua kiểm tra Miller T−ơng tự nh− vậy, số

1373653, số giả nguyên tố mạnh lẻ bé sở 3, đ−ợc dùng để kiểm tra

nguyên tố số bé Đối với sở 2,3 5, số giả nguyên tố mạnh lẻ bé

nhất 25326001, trờng hợp sở 2,3,5,7,số tơng ứng 3215031751

Trong nhng s nhỏ 25.109, có số giả nguyên tố lẻ với sở 2,3,5,7,

lµ 3251031751 Nh vậy, n<25.109 số lẻ trải qua kiểm tra Miller, n số

nguyên tố nÕu nã kh¸c víi 3251031751

VnMath.Com

(23)

Cách làm áp dụng đ−ợc cần kiểm tra nguyên tố số không lớn Đối với số lớn, ta dùng thuật tốn xác suất dựa định lí sau đây:

Định lí 2.21. Nếu n hợp số d−ơng lẻ tồn khơng q (n-1)/4 sở b, 1bn-1, cho n trải qua đ−ợc kiểm tra Miller i vi cỏc c s ú

Định lí đợc chứng minh dựa vào khái niệm số mà ta không trình bày

õy c giả quan tâm tìm đọc trong[Ro] Nhờ định lí 2.21, ta kết luận n hợp số thấy trải qua kiểm tra Miller với (n-1)/4 sở Tuy nhiên, việc kiểm tra nh− đòi hỏi nhiều thời gian

Từ định lí 2.21 suy rằng, số b đ−ợc chọn ngẫu nhiên khoảng 1≤b≤n-1 n trải qua kiểm tra Miller sở b với xác suất bé 1/4 Nh− vậy, ta chọn k

số ngẫu nhiên xác suất để n trải qua kiểm tra Miller k sở bé 1/4k Khi 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ố Từ ta có thuật tốn xác suất sau

ThuËt to¸n Rabin-Miller (1980)

Cho N≥3 lẻ, thuật toán sau xác định rằng N hợp số, in thông báo N số nguyên tố với xác suất lớn 1-1/420

RM1 (Xuất phát) Đặt q←N-1, t←0, q chẵn đặt

q←q/2, t←t+1 (bây ta có N-1=2tq, với q lẻ) Sau đặt c←20

RM2 (Chän a míi) Chän ngÉu nhiªn sè a khoảng 1<a<N Đặt e0, baq

mod N Nu b=1, chuyển sang RM4 RM3.(Bình ph−ơng) Nếu b/≡ ±1(mod N) e<t-2, ta đặt b←b2

mod N, e←e+1 NÕu b≠N-1, in thông báo n hợp số kết thúc thuật toán

RM4 Đặt cc-1 Nếu c>0, chuyển sang RM2 Nếu c=0, in thông báo N số nguyên tố

Đ7 Phân số liên tục.

Giả sử a,b số nguyên d−ơng, a>b Khi đó, phân số a/b viết d−ới dạng:

a b a

c

b a b c

= + = 0+

0

Phân số b/c0 lại biểu diễn dới dạng tơng tự nh vậy, cuối ta nhận

đợc:

VnMath.Com

(24)

a

b a a a a o n n = + + + − 1 1

Cách viết nh đợc gọi biểu diễn số hữu tỷ a/b dới dạng phân số liên tơc

Để đơn giản kí hiệu, ta th−ờng dùng cách viết a/b=[a0;a1,a2, ,an] Phân số liên tục [a0;a1,a2, ,an] đ−ợc gọi phân số liên tục hữu hạn.

Dïng tht to¸n Euclid, cã thĨ biĨu diƠn mäi số hữu tỷ dới dạng phân số liên tục

hữu hạn Thật vậy, ta có a=a0b+c0, b=a1c0+c1, Ngợc lại, rõ ràng phân số hữu

hạn liên tục số hữu tỷ

Ta biểu diễn số thực tuỳ ý dới dạng phân số liên tục Tuy nhiên

trong trờng hợp này, phân số liên tục không hữu hạn Cách làm hoàn

toàn tơng tự nh làm với số hữu tỷ

Giả sử x số thực tuỳ ý Đặt a0=[x], phần nguyên x, x0=x-a0 phần lẻ x

Tip theo đó, ta đặt a1=[1/x0], x1=1/x0-a1 Tóm lại số i>1, đặt ai=[1/xi-1], xi=1/xi-1-ai Nếu b−ớc thứ i đó, xi=0 q trình kết thúc (Điều xảy

vµ chØ x lµ sè hữu tỷ) Ngợc lại, ta có biểu diễn x dới dạng phân số liên tục vô hạn: [a0;a1,a2, ,an, ]

Nhiều để thuận tiện, ta dùng cách viết sau đây: x=a

a a an

1

1 1

+

+ + ++ + ++

Các phân số liên tục định nghĩa nh− với số nguyên đ−ợc gọi phân số liên tục đơn giản. Khi khơng địi hỏi số ngun, mà số

thùc tuú ý, ta cịng dïng c¸ch viÕt x=[a0;a1,a2, ,an]= a

a a an

0

1

1 1

+

+ + ++ +

Khi có phân số liên tục x=[a0;a1,a2, ,an, ], ta gọi số sau phân sè héi tơ riªng cđa x:

Ck= [a0;a1,a2, ,ak]

Định lí 2.22 Giả sử a0,a1, ,an số thực, a0,a1, ,an>0 Đặt p0=a0,

q0=1, p1=a0a1+1, q1=a1, với k2, pk=akpk-1+pk-2, qk=akqk-1+qk-2 Khi đối với phân số hội tụ riêng Ck ta có:

Ck= [a0;a1,a2, ,ak]= pk/qk

Chøng minh. Ta chøng minh b»ng qui n¹p Víi k=0, C0=a0=p0/q0 Víi k=1,

C1=[a0;a1]=a0+

1

a =p1/q1

VnMath.Com

(25)

Ta cã:

Ck+1=[a0;a1,a2, ,ak+1]=a

a a ak

1

1 1

+

+ + ++ + +

=[a0;a1,a2, ,ak-1,ak+

1

ak+ ]=

( )

( )

a

a p p a

a q q

k k k k k k k k + + + + + − − + − − 11 1

theo giả thiết qui nạp Tính tốn đơn giản dựa vào định nghĩa số pk,qk, ta đ−ợc:

Ck+1=pk+1/qk+1

Định lí đợc chứng minh

Định lí 2.23 Víi mäi k≥1,ta cã:

pkqk+1-pk-1qk=(-1) k-1

Từ ta suy rằng, số pk,qk nguyờn t cựng

Định lí2.24 Ta có:

C1>C3>C5>

c0<C2<C4> C2j+1>C2k, víi mäi j,k

lim Ck=x

Chứng minh định lí (bằng quy nạp) đ−ợc dành cho độc giả Có thể thấy

rằng, tên gọi “phân số liên tục riêng “ đ−ợc giải thích định lí trờn õy

Định lí 2.25 Giả sử n số tự nhiên không phơng pk,qk phân số

hi t riờng ca n Ta đặt α0= n, số αk, Qk, Pk đ−ợc định nghĩa theo

c«ng thøc sau:

αk= (Pk+ n)/ Qk,

ak=[αk],

Pk+1=akQk-Pk

Qk+1=(n-Pn+12)Q k

Khi ta có:

pk 2-n q

k

2=(-1)k-1Q k+1

Chứng minh.áp dụng định lí vừa chứng minh, ta có:

VnMath.Com

(26)

n=α0=[a0;a1,a2, ,ak+1]=a p p

a q q

k k k

k k k

+ −

+ −

+ +

1

1

Từ đó, ak+1= (Pk+1+ n)/ Qk+1, ta đ−ợc:

n=( )

( )

P n p Q p P n q Q q

k k k k

k k k k

+ + −

+ + −

+ +

+ +

1 1

1 1

VËy,

nqk+(Pk+1qk+Qk+1qk-1) n=(Pk+1pk+Qk+1pk-1) +pk n

Từ suy ra:

nqk= Pk-1pk+ Qk+1pk-1,

pk= Pk+1qk+ Qk+1qk-1

Nhân đẳng thức thứ với qk, đẳng thức thứ hai với pk trừ đẳng thức thứ hai cho

đẳng thức thứ nhất, ta thu đ−ợc kết cần chứng minh

Sau ta áp dụng phân số liên tục để tìm thuật tốn phân tích số ngun thừa số ngun tố Nói xác hơn, ta xây dựng thuật toán để với số tự nhiên n cho tr−ớc, tìm −ớc số khơng tầm th−ờng (khác n)

Ta xuất phát từ nhận xét đơn giản sau đây: Nếu ta tìm đ−ợc số x, y cho

x-y1 x2-y2=n ta tìm đợc số ớc không tầm thờng n,

n= x2-y2=(x-y)(x+y)

Bây giờ, giả sử ta có kết yếu hơn, chẳng hạn tìm đợc x,y cho x2≡y2(mod n)

vµ 0<x<y<n, x+y≠n

Khi n −ớc tích (x-y)(x+y), rõ ràng n không −ớc x+y nh−

x-y Nh− −ớc số chung d1=(n,x-y) d2=(n,x+y) −ớc số không tầm th−ờng n Các −ớc số tìm đ−ợc cách nhanh chóng nhờ thuật tốn Euclid Định lí 2.25 cho ta ph−ơng pháp để tìm số x,y cần thiết

Theo định lí 2.25 ta có:

pk

2≡(-1)k-1Q

k-1 (mod n)

Nh− vậy, vấn đề phải tìm đ−ợc Qk với số chn, v l mt s chớnh phng

Mỗi lần tìm đợc số Q k nh vậy, ta tìm đợc ớc n (cũng xảy

tr−ờng hợp −ớc tầm th−ờng: pk,Qk không thiết bé n nên điều kiện

n ớc x+y x-y không thoả mÃn)

Ví dụ 1) Phân tích số 1037 thừa số cách sử dụng phân sè liªn tơc ta cã α= 1037=32,2 , Q1=1,Q2=49, p1=129 Nh− vËy, 129

2≡49(mod 1037) Do

đó, 1292-72=(129-7)(129+7) ≡0(mod 1037) Tính −ớc chung lớn nhất, ta đ−ợc:

(129-7,1037)=61, (129+7,1037)=17 Ta cã hai −íc 1037, trờng hợp

này có khai triĨn 1037=61.17

VnMath.Com

(27)

2) Ph©n tích 1000009 Ta tính đợc Q1=9, Q2=445, Q3=873, Q4=81 Nh vậy,

p32 92(mod 100009): ta không thu đợc ớc không tầm thờng Tính toán tiếp tục,

ta có: Q18=16 số ph−ơng, p17=494881 Bằng thut toỏn ó mụ t, ta tỡm

đợc −íc sè 293, 3413

VnMath.Com

(28)

Bài tập tính toán thực hành chơng I. Bài tập.

2.1 Chuyển số (1999) từ sè 10 sang c¬ sè 7, sè (6105) tõ c¬ số sang số 10 2.2 Chuyển số 10001110101 11101001110 từ số sang số 16 (kí hiệu chữ số số 16 bëi 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E)

2.3 Chøng minh vật nặng không 2k-1 (với trọng lợng số nguyên)

u cú th cõn bng cân hai đĩa, sử dụng cân 1, 2, 22, ,2k-1

2.4 Chứng minh số nguyên biểu diễn d−ới dạng

ek3 k+e

k-13

k-1+ +e 13+e0,

trong ej=-1, 1; j=0,1, ,k

2.5 Chứng minh rằng, số thực α ∈R, 0≤α<1 biểu diễn

d−íi dạng số b

= cj bj j

/

= ∞ ∑

1

, 0≤cj≤b-1,

thoả mãn điều kiện: với N, tồn nN cnb-1

2.6 áp dụng 2.5, viết số với 10 chữ số sau dÊu phÈy

2.7 a) Chứng minh số nguyên d−ơng n có biểu diễn Cantor

dới dạng sau:

n=amm!+am-1(m-1)!+ +a22!+a11! b) Tìm khai triĨn Cantor cđa 14, 56, 384

2.8 Gi¶ sư a số nguyên (trong số 10) với bốn chữ số cho

chữ số nh nhau. a số nhận đợc từ a cách viét chữ số theo thứ tự giảm dần, a số nhận đợc cách viết chữ số theo thứ tự tăng dần Đặt T(a)=a-a Ví dô: T(1998)=9981-1899

a) Chứng minh số nguyên (không phải chữ số nh− nhau) cho

T(a)=a lµ a=6174

b) Chứng minh a là số nguyên d−ơng chữ số, chữ số

nh− nhau, th× d·y a, T(a), T(T(a)), nhận đợc cách lặp phép toán T, dừng số 6174 (đợc gọi h»ng sè Kapreka)

2.9 Ước l−ợng thời gian cần thiết để tính n!

2.10 Ước l−ợng thời gian cần thiết để chuyển số k-bit sang hệ thập phân

2.11 a) Chứng minh rằng, A, B ma trận vng cấp n thì để tìm tớch AB

(theo quy tắc nhân ma trận thông thờng) ta cần n3 phép nhân

VnMath.Com

(29)

b) Chứng minh nhân hai ma trận vuông cấp hai mà cần phép nhân, sử dụng đồng thức sau đây:

a a a a

b b b b

a b a b x a a b b a a a a b

x a a b b a b b b b x a a b b a a b b

11 12

21 22

11 12

21 22

11 11 12 21 21 22 12 11 11 12 21 22 22

11 21 22 12 22 11 21 12 22 11 21 22 12 21 22 12 11

 

  = 

 

+ + + − + + − −

+ − − − − − + + − − + + −

( )( ) ( )

( )( ) ( ) ( )( ) ( )( ) ,

trong x=a11b11-(a11-a21-a22)( b11-b12+b22)

c) B»ng quy nạp tách ma trận 2nì2n thành ma trận nìn, chứng minh nhân hai ma trận 2kì2k chỉ với 7k phép nhân không h¬n 7k+1 phÐp céng

d) Từ c) suy nhân hai ma trận vng cấp n với O(nlogc7) phép tính bit phần tử ma trận có d−ới c bit, với số c

2.12 Dùng sàng Eratosthenes để tìm số nguyên tố bé 1998

2.13 Cho Qn=p1p2 pn+1, p1,p2, , pn là n số ngun tố Tìm −ớc

nguyªn tè bÐ nhÊt cđa Qn, víi n=1,2,3,4,5,6

Trong d·y Qn có vô hạn hay hữu hạn số nguyên tố?

2.14 Chứng minh tồn vô hạn số nguyên tè

2.15 Chøng minh r»ng nÕu −íc nguyªn tè bé p số nguyên dơng n

vợt n n/p số nguyên tố

2.16 Chứng minh không tồn ba nguyên tố p, p+2, p+4 3,5,7

2.17 Chøng minh r»ng nÕu a|x, b|x vµ a, b nguyên tố a.b|x

2.18 Chng minh a,m nguyên tố tồn nghịch đảo m mod b

2.19 Cho a,b,c,m số nguyên, m d−ơng Giả sử d ƯCLN c m Khi đó, acbc(mod m) a≡b(mod m/d)

2.20 Giả sử r1, r2, ,rm hệ thặng d− đầy đủ modulo m, a số nguyên,

nguyên tố với m, b số nguyên tuỳ ý Chứng minh ar1+b, ar2+b , , arm+b hệ đầy đủ thặng d− modulo m

2.21 Giả sử a≡b(mod mj), j=1,2, , k, mj số nguyên tố cặp Chứng minh a≡b(mod m1m2 mk)

2.22 Cho p lµ sè nguyên tố Chứng minh a21(mod p)

a≡ ±1(mod p)

2.23 Chøng minh với số nguyên không âm m,n mäi sè nguyªn a>1, ta

(am-1, an-1)=a(m,n)-1

VnMath.Com

(30)

2.24 a) Chøng minh r»ng cã thĨ t×m −íc chung lín nhÊt cđa hai số nguyên dơng thuật toán sau

(a,b)=

a a b

a b a b

a b a b

a b b a b

nếu

nếu chẵ n

nếu chẵ n lẻ

nÕu lỴ

=

−      

2 2

2

( / , / ) ,

( / , ) ,

( , ) ,

b) Dùng thuật tốn để tìm (2106, 8318)

2.25 Chứng minh rằng, với n, tìm đ−ợc n số tự nhiên liên tiếp cho số có −ớc số ph−ơng

2.26 Giả sử n=p1p2 pk, pj số nguyên tố, n số Carmichael Chứng minh k≥3 áp dụng kết để tìm số Carmichael nhỏ

2.27 Chứng minh rằng, 6m+1, 12m+1, 18m+1 số nguyên tố (6m+1)(12m+1)(18m+1) số Carmichael

Chøng minh số sau số Carmichael:

1729, 294409, 56052361, 118901521, 172947529 2.28 Chøng minh r»ng 6601 lµ mét sè Carmichael

2.29 Chøng minh r»ng n=2047=23.89 lµ số giả nguyên tố mạnh sở

2.30 Cho b,m số nguyên nguyên tố nhau, a,c số nguyên dơng Chứng minh rằng, ba1(mod m), bc1(mod m) d=(a,c) bd 1(mod m)

2.31 Cho p số nguyên tố, p|bm-1 Chøng minh r»ng, hc p|bd-1 víi

d

−íc thùc sù cđa m (kh¸c m), d1(mod m) Nếu p>2, m lẻ tr−êng hỵp sau, ta cã p≡1(mod 2n)

2.32 áp dụng tập để phân tích thừa số số 211-1=2047, 213-1=8191,

312-1=531440, 235-1=34355738367

2.33 Tìm phân số liên tục số 2, 3, 5,(1+ 5)/2

2.34 Biết phân số liên tục e

e=[2;1,2,1,1,4,1,1,6,1,1,8, ] a) Tìm phân số hội tụ riêng e

b) Tìm xấp xỉ hữu tỷ tốt e cã mÉu sè bÐ h¬n 100

2.35 Cho α số vô tỷ Chứng minh rằng, |-pk/qk|<1/2qk

2, hc |α-pk+1/qk+1|<1/2qk+12

2.36 Cho f(x) đa thức tuỳ ý với hệ số nguyên Chứng minh tồn vô hạn số nguyên k cho f(k) hợp số

VnMath.Com

(31)

II Thực hành tính toán máy

Đối với tất chơng, tính toán thực hành máy tính với chơng trình Maple đợc bắt đầu dòng lệnh:

[>with(numtheory);

Các phép to¸n sè häc ( phÐp céng [+], phÐp trõ [-], phÐp nh©n [*], phÐp chia [/], phÐp luü thõa [^], khai bậc hai [sqrt(.)], ) đợc viết thực hiƯn theo thø tù quen biÕt

Ln ln ghi nhớ cuối dòng lệnh phải dấu chấm phẩy (;) dấu (:) Muốn thực dòng lệnh phải đ−a trỏ dịng lệnh (sau dấu chấm phẩy) nhấn phím [Enter] Hãy thực dịng lệnh theo trình tự tr−ớc sau, số tính tốn b−ớc sau yêu cầu kết từ b−ớc tr−ớc

II Thực hành kiểm tra số số nguyên tè

§Ĩ kiĨm tra mét sè n cã phải số nguyên tố hay không ta thực lÖnh nh− sau:

[>isprime(n);

Sau dÊu (;) Ên phím Enter Nếu hình chữ true n là số

nguyên tố, hình chữ false n hợp số

Thí dụ: Số 2546789 có phải số nguyên tè hay kh«ng?

[>isprime(n);

False

VËy 2546789 số nguyên tố

II Thực hành tìm ớc chung lớn

Để thực hành tìm ớc chung lớn hai số a b, hÃy vào dòng lệnh có cú

pháp nh− sau:

[>gcd(a,b);

Sau dÊu (;) Ên phÝm Enter việc tìm ớc chung lớn đợc thực có kết

Thí dơ: T×m −íc sè chung lín nhÊt cđa sè 157940 78864 Thực câu lệnh sau:

[> gcd(157940,78800);

20

VËy −íc chung lín nhÊt 157940 78864 20

II Phân tích thừa số nguyên tố

Để phân tÝch sè n thõa sè nguyªn tè ta thùc hiÖn lÖnh sau:

VnMath.Com

(32)

[>ifactor(n);

Sau dấu (;) ấn phím Enter việc phân tích n thừa số nguyên tố đợc thực có kết

Thí dụ: Phân tích số 122333444455555666666777777788888888999999999 thừa số nguyên tố

Ta thùc hiÖn nh− sau:

[>

ifactor(122333444455555666666777777788888888999999999);

(3)(12241913785205210313897506033112067347143)(3331)

Ta dùng lệnh để kiểm tra xem số n có phải số nguyên tố hay

kh«ng

II Thùc hµnh kiĨm tra mét sè lµ sè Carmichael

Ta nhớ lại Định lí 17 nh sau:

Định lí 2.17 Nếu n=q1q2 qk, qj số nguyên tố khác thoả mãn

(qj-1)|(n-1), n số Carmichael

Do ú để kiểm tra xem số n có phải số Carmichael hay khơng ta thực

theo c¸c bớc sau:

Bớc 1: Phân tích n thành tích thừa số nguyên tố, ta thực dòng lƯnh:

[>ifactor(n);

Sau dấu (;) ấn phím “Enter” hình kết phân tích n thừa số nguyên tố Nếu n hợp số có dạng n=q1q2 qk, trong đó qj số nguyên tố khác thực tiếp b−ớc kiểm tra thứ Nếu khơng có th khng nh n

không phải số Carmichael

B−íc 2: Thùc hiƯn c¸c phÐp tÝnh chia (n-1):(qj-1), ta thùc hiƯn b»ng dßng lƯnh sau:

[>(n-1)/(qj-1);

Sau dấu (;) ấn phím Enter hình kết thơng phép chia

Nếu với j=1,2, , k th−ơng tìm đ−ợc số nguyên ta khẳng định n là số Carmichael, khơng trả lời khơng phải

Thí dụ 1: Số 6601 có phải số Carmichaelhay kh«ng? Thùc hiƯn kiĨm tra nh− sau:

[>ifactor(6601);

(7)(23)(41)

VnMath.Com

(33)

6601 đợc phân tích thành thừa số nguyên tố khác nhau, vËy cã thĨ nghi ngê nã lµ sè Carmichel §Ĩ kiĨm tra xem nã cã thùc sù lµ sè Carmichel hay không, ta thực lệnh sau:

[>(6601-1)/(7-1);

1100 [>(6601-1)/(23-1);

300 [>(6601-1)/(41-1);

165

VËy 6601 lµ sè Carmichael

ThÝ dơ 2: Sè có phải số Carmichael hay không? Thực kiÓm tra nh− sau:

[>ifactor(6);

(2)(3) [>(6-1)/(2-1);

5 [>(6-1)/(3-1);

5 Vậy lµ sè Carmichael

ThÝ dơ 3: Sè 45 cã phải số Carmichael hay không? Thực kiểm tra nh− sau:

[>ifactor(45);

(3)2 (5)

Sè 45 không thoả mÃn bớc thứ Vậy 45 lµ sè Carmichael

II Thùc hµnh kiĨm tra số giả nguyên tố

Cho hai số nguyên dơng n, b Để kiểm tra xem n có phải số giả nguyên tố sở

b hay không ta thực bớc nh sau:

Bớc 1: Kiểm tra n hợp số, ta thùc hiƯn dßng lƯnh:

[>isprime(n);

VnMath.Com

(34)

Sau dÊu (;) Ên phÝm “Enter” NÕu trªn hình chữ true n là số nguyên tố, hình chữ false n hợp số Nếu n là số nguyên tố n số giả nguyên tố sở b. Nếu ngợc lại thực tiếp bớc

B−ớc 2: Kiểm tra đồng d− thức bn-b0(mod n), thực dòng lệnh:

[>b&^n-b mod n;

Sau dấu (;) ấn phím “Enter” hình kết Nếu số n số giả nguyên tố sở b

ThÝ dơ1: Sè 561 cã ph¶i số giả nguyên tố sở hay không? Ta thùc hiƯn c¸c lƯnh sau:

[>isprime(561);

false [>2&^561-2 mod 561;

0

VËy 561 lµ sè giả nguyên tố sở

Thí dụ 2: Số 12241913785205210313897506033112067347143 có phải số giả nguyên tố sở hay không?

Ta thực lệnh sau:

[>ispime(12241913785205210313897506033112067347143); true

Số 12241913785205210313897506033112067347143 số ngun tố Do 12241913785205210313897506033112067347143 khơng phải số giả nguyên tố sở

ThÝ dô 3: Sè 326 có phải số giả nguyên tố sở hay không? Ta thực lệnh sau:

[>isprime(326);

false

[>3&^326-3 mod 326;

6

Vậy 326 là số giả nguyên tố sở

II Thực hành kiểm tra số số giả nguyên tố mạnh

Cho n số nguyên dơng lẻ, b số nguyên dơng Để kiểm tra n có phải số giả nguyên tố mạnh sở b hay không ta thùc hiƯn theo c¸c b−íc sau:

B−íc 1: KiĨm tra n hợp số, ta thực dòng lÖnh:

VnMath.Com

(35)

[>isprime(n);

Sau dấu (;) ấn phím Enter Nếu hình chữ true n là số

nguyên tố, hình chữ false n hợp số Nếu n là số nguyên tố n số giả nguyên tố mạnh sở b Nếu ngợc lại thực tiếp bớc

Bớc 2: Phân tích n-1 thừa số nguyên tè, ta thùc hiƯn b»ng dßng lƯnh:

[>ifactor(n-1);

Sau dấu (;) ấn phím “Enter” hình phân tích n-1 ta thu đ−ợc kết có dạng n-1=2st, s số nguyên d−ơng, t số nguyên d−ơng lẻ

B−ớc 3: Kiểm tra đồng d− thức bt-1≡0(mod n) Vào lệnh

[>b&^t-1 mod n;

Sau dấu (;) ấn phím “Enter” hình kết Nếu số n số giả nguyên tố mạnh sở b, kết số khác ta thực tiếp b−ớc

B−ớc 4: Kiểm tra đồng d− thức (b2jt + ≡1) 0(mod n) với j=0, s-1, ta thực dòng lệnh:

[>seq (b&^((2^j)t)+1 mod n, j=0 s-1);

Sau dấu (;) ấn phím Enter hình sÏ hiƯn d·y kÕt qu¶ NÕu d·y kÕt có số số n số giả nguyên tố mạnh sở b

Thí dụ: Số 2047 có phải số giả nguyên tố mạnh sở hay không? Thực kiểm tra nh− sau:

[>isprime(2047);

false

Do n hợp số Tiếp tục thực lệnh

[>ifactor(n-1);

(2)(3)(11)(31)

TiÕp tơc thùc hiƯn lƯnh

[>2&^(3*11*31)-1 mod 2047;

VËy2047 lµ sè giả nguyên tố mạnh sở

II Thực hành biểu diễn số dới dạng phân số liªn tơc

1 BiĨu diƠn sè n d−íi dạng phân số liên tục theo cách thông thờng với số thơng biểu diễn k, ta dùng lệnh:

[>cfrac(n,k);

VnMath.Com

(36)

Sau dÊu (;) ấn phím Enter hình xuất kết

Thí dụ: Biểu diễn dới dạng phân số liên tục theo cách thông thờng với th−¬ng

Ta thùc hiƯn lƯnh:

[> cfrac (Pi,6);

3

7

15

1

292

1

1

+ +

+ +

+ +

+

2 Biểu diễn số n d−ới dạng phân số liên tục theo cách đơn giản với số chữ số biểu diễn k, ta dùng lệnh:

[>cfrac(n,k,’quotients’);

Sau dÊu (;) Ên phÝm “Enter” hình xuất kết

Thớ dụ: Biểu diễn π d−ới dạng phân số liên tục theo cách viết đơn giản với 100 chữ số biểu diễn

Ta thùc hiÖn lÖnh:

[> cfrac (Pi,100,’quotients’);

[3,7,15,1,292,1,1,1,2,1,3,1,14,2,1,1,2,2,2,2,1,84,2,1,1, 15,3,13,1,4,2,6,6,99,1,2,2,6,3,5,1,1,6,8,1,7,1,2,3,7,1, 2,1,1,12,1,1,1,3,1,1,8,1,1,2,1,6,1,1,5,2,2,3,1,2,4,4,16, 1,161,45,1,22,1,2,2,1,4,1,2,24,1,2,1,3,1,2,1,1,10,2, ]

3 BiÓu diễn số n dới dạng phân số liên tục theo chu kỳ tuần hoàn, ta dùng lệnh:

[>cfrac(n,periodic);

Sau dấu (;) ấn phím Enter hình xt hiƯn kÕt qu¶

ThÝ dơ: BiĨu diƠn 31/2 dới dạng phân số liên tục theo chu kỳ tuần hoµn

Ta thùc hiƯn lƯnh:

[>cfrac (3^(1/2),'periodic');

1

1

2

1

+ +

+ +

+

VnMath.Com

(37)

4 Biểu diễn số n d−ới dạng phân số liên tục theo chu kỳ tuần hoàn đơn giản, ta dùng lệnh:

[>cfrac (n,'periodic','quotients');

Sau dÊu (;) Ên phÝm “Enter” hình xuất kết

Thớ dụ: Biểu diễn 31/2 d−ới dạng phân số liên tục theo chu kỳ tuần hoàn đơn giản

Ta thùc hiÖn lÖnh:

[> cfrac (3^(1/2),'periodic','quotients'); [[1], [1, 2]]

II Thực hành tìm ph©n sè héi tơ thø k cđa mét sè

Để thực hành tìm phân số hội tụ thứ k cđa mét sè n, ta thùc hiƯn theo c¸c lƯnh sau:

Bc 1: BiĨu diƠn n d−íi d¹ng phân số liên tục

[> cf:= cfrac(n);

Sau dấu (;) ấn phím Enter hình xuất hiƯn sù biĨu diƠn

B−íc 2: TÝnh ph©n sè héi tô thø k

[> nthconver(cf,k);

Sau dÊu (;) ấn phím Enter hình xuất kÕt qu¶

Trong q trình thực ta không cần biết kết thị b−ớc 1,

thay dấu (;) dấu (:) dịng lệnh ([>cf:=cfrac(n):) Khi

màn hình dấu nhắc ([>) để thực tiếp lệnh thứ

ThÝ dô: TÝnh ph©n sè héi tơ thø cđa e Ta thùc hiÖn nh− sau:

[> cf:= cfrac(exp(1));

cf:

= + +

+ +

+ +

+ +

+ +

2

1

2

1

1

4

1

1

6

1

[> nthconver(cf,5);

VnMath.Com

(38)

87 32 Nh− vËy, phân số hội tụ thứ e 87

32

II Thực hành đổi số

1 Để thực hành đổi số n từ 10 sang số b ta dùng dòng lệnh sau:

[>convert(n,base,b);

Sau dÊu (;) Ên phÝm Enter hình lên dòng kết Chú ý kết đa hình đợc viết theo thứ tự ngợc lại

Thí dụ 1: Đổi số 24564 từ số 10 sang số Ta thực hành nh sau:

[>convert(24564,base,6);

[0, 2, 4, 5, 0, 3]

Vậy ta đợc số (305420)6

Chỳ ý: Trong tr−ờng hợp số b >10, ta thực dịng lệnh đổi số nh−

bình th−ờng Tuy nhiên, sau nhận đ−ợc kết quả, để tránh nhầm lẫn ta thực việc đặt t−ơng ứng số lớn 10 với kí hiệu Ta xem ví dụ sau:

Thí dụ 2: Đổi số 45676 từ số 10 sang số 15, đặt 10=A, 11=B,12=C,13=D,14=E

Ta thùc hµnh nh− sau:

[>L:=convert(45676,base,6):

[>subs(10=A,11=B,12=C,13=D,14=E,L);

[1, 0, 8, D]

Vậy ta đợc số (D801)15

2. Để thực hành đổi số n từ số a sang số b ta dùng dòng lệnh sau:

[> convert(n,base,a,b);

Sau dÊu (;) Ên phÝm Enter hình lên dòng kết Chú ý kết đa hình đợc viết theo thứ tự ngợc lại

Thí dụ: Đổi số 305420 số sang sè 10 Ta thùc hiƯn dßng lƯnh

VnMath.Com

(39)

[> convert([0,2,4,5,0,3],base,6,10);

[4, 6, 5, 4, 2]

Vậy ta có kết (24564)10

VnMath.Com

(40)

Ch¬ng

Các hàm số học

Khi nghiờn cứu số nguyên, ta th−ờng làm việc với đại l−ợng nh−: số −ớc số nguyên tố cho tr−ớc, tổng −ớc nó, tổng luỹ thừa bậc k

−ớc, Ngoài ví dụ cịn có nhiều hàm số học quan trọng khác Trong ch−ơng này, ta xét sơ qua vài hàm quan trọng Phần lớn ch−ơng đ−ợc giành cho hàm Euler, hm s hc quan trng nht

Đ1 Định nghĩa

Định nghĩa 3.1 Hàm số học tức hàm xác định tập hợp số nguyên d−ơng Định nghĩa 3.2 Một hàm số học f đ−ợc gọi nhân tính với mọi n, m nguyên tố nhau, ta có f(mn)=f(m)f(n) Trong tr−ờng hợp đẳng thức với m,n

(không thiết nguyên tố nhau), hàm f đ−ợc gọi nhân tính mạnh Những ví dụ đơn giản hàm nhân tính (mạnh) là: f(n)=n f(n)=1

DÔ chøng minh tÝnh chất sau đây: nếu f hàm nhân tính, n số nguyên dơng có khai triển thành thừa số nguyên tố dạng n=p1a1p

2 a2 p

k

ak, f(n) đợc tính theo

công thức

f(n)=f(pa1)f(pa2) f(pak)

Đ2 Phi hàm Euler

Trong hàm số học, hàm Euler mà ta định nghĩa sau có vai trị quan trọng Định nghĩa 3.3 Phi- hàm Euler φ(n) hàm số học có giá trị n số số không v−ợt n nguyên tố với n

Ví dụ. Từ định nghĩa ta có: φ(1)=1, φ(2)=1, φ(3)=2, φ(4)=2, φ(5)=4, φ(6)=2, φ(7)=6, φ(8)=4 , φ(9)=6, φ(10)=4

Từ định nghĩa ta có hệ trực tiếp: Số p nguyên tố φ(p)=p-1

Nếu định lí Fermat bé cho ta công cụ nghiên cứu đồng d− modulo số nguyên tố, Phi-hàm Euler đ−ợc dùng để xét đồng d− modulo hợp số Tr−ớc vào vấn đề đó, ta cần số định nghĩa sau

VnMath.Com

6

Ngày đăng: 28/04/2021, 03:10

w