1. Trang chủ
  2. » Luận Văn - Báo Cáo

Các thuật toán cơ bản trong lý thuyết số

89 2,8K 1

Đ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 89
Dung lượng 407,66 KB

Nội dung

Luận văn thạc sỹ CÁc thuật toán cơ bản trong lý thuyết số Luận văn thạc sỹ CÁc thuật toán cơ bản trong lý thuyết số Luận văn thạc sỹ CÁc thuật toán cơ bản trong lý thuyết số Luận văn thạc sỹ CÁc thuật toán cơ bản trong lý thuyết số Luận văn thạc sỹ CÁc thuật toán cơ bản trong lý thuyết số Luận văn thạc sỹ CÁc thuật toán cơ bản trong lý thuyết số

Trang 1

TRƯỜNG ĐẠI HỌC KHOA HỌC

NGUYỄN THÙY DUNG

CÁC THUẬT TOÁN CƠ BẢN TRONG LÝ THUYẾT SỐ

LUẬN VĂN THẠC SĨ TOÁN HỌC

Thái Nguyên - Năm 2014

Trang 2

TRƯỜNG ĐẠI HỌC KHOA HỌC

NGUYỄN THÙY DUNG

CÁC THUẬT TOÁN CƠ BẢN TRONG LÝ THUYẾT SỐ

Chuyên ngành: PHƯƠNG PHÁP TOÁN SƠ CẤP

Mã số : 60.46.01.13

LUẬN VĂN THẠC SĨ TOÁN HỌC

NGƯỜI HƯỚNG DẪN KHOA HỌCPGS TS TẠ DUY PHƯỢNG

Thái Nguyên - Năm 2014

Trang 3

Mục lục

Mục lục i

Mở đầu 1 Nội dung 3 1 Các thuật toán cơ bản trong lý thuyết số 3 1.1 Tìm thương và số dư 3

1.2 Thuật toán Euclid phân tích một số ra thừa số nguyên tố 6 1.3 Thuật toán tìm ước số chung lớn nhất 8

1.4 Thuật toán tìm bội số chung nhỏ nhất 12

1.5 Thuật toán Lucas - Lehmer tìm số nguyên tố 15

1.6 Thuật toán Miller tìm số giả nguyên tố 18

1.7 Một số thuật toán trong mật mã công khai 23

1.8 Một số thuật toán khác 28

2 Lập trình và thực thi trên máy tính một số thuật toán số học 30 2.1 Tìm thương và số dư 30

2.2 Kiểm tra số nguyên tố 43

2.3 Phân tích một số ra thừa số nguyên tố 50

2.4 Tìm ước chung lớn nhất 59

Trang 4

2.5 Tìm bội chung nhỏ nhất 662.6 Tìm số nguyên tố đứng sau hoặc đứng trước một số tự nhiên 742.7 Một số ứng dụng trong lý thuyết mật mã 752.8 Maple và một số giả thuyết về số nguyên tố 77

Trang 5

LỜI CẢM ƠN

Với lòng kính trọng và biết ơn sâu sắc em xin chân thành cảm

ơn thày PGS TS Tạ Duy Phượng đã hướng dẫn và chỉ bảo tận tình cho

em trong suốt quá trình làm luận văn Thầy không chỉ truyền thụ nhữngtri thức khoa học mà còn chỉ dẫn cho em những phương pháp làm việc tốtcùng những lời động viên khuyến khích kịp thời

Em cũng xin gửi lời cảm ơn chân thành đến Ban giám hiệu, phòngĐào tạo, khoa Toán - Tin Trường ĐHKH, Đại học Thái Nguyên đã tạođiều kiện thuận lợi trong suốt quá trình học tập tại trường

Xin chân thành cảm ơn gia đình, bạn bè đồng nghiệp và cácthành viên trong lớp cao học toán K6B đã luôn quan tâm, động viên, giúp

đỡ em trong suốt thời gian học tập và quá trình làm luận văn

Thái Nguyên, 2014.Nguyễn Thùy Dung

Trang 6

Mở đầu

Cùng với sự phát triển của máy tính điện tử, tin học ngày càngxâm nhập sâu hơn vào chương trình giảng dạy toán, thậm chí ở cấp phổthông Một số thuật toán trong lý thuyết số đã được biết đến từ thờiEuclid Tuy nhiên, thực thi chúng với các số lớn không dễ dàng nếu không

có máy tính điện tử Cùng với sự phát triển của toán và tin học, nhiềuthuật toán mới ra đời, đáp ứng những đòi hỏi mới của thực tế (mật mãhóa công khai, phân tích các số nguyên tố lớn, ) Vì vậy, ngành số họcthuật toán đã ra đời Việc tổng hợp, nghiên cứu và xây dựng các chươngtrình tính toán trong số học là một công việc thú vị và hữu ích Để đápứng nhu cầu học tập và giảng dạy, tác giả đã chọn đề tài “ Các thuật toán

cơ bản trong lý thuyết số”

Luận văn bao gồm phần mở đầu, hai chương, kết luận và danhmục các tài liệu tham khảo

Chương 1 Các thuật toán cơ bản trong lý thuyết số

Trình bày các thuật toán cơ bản trong Lý thuyết số (tìm ước số chung lớnnhất, bội số chung nhỏ nhất, tìm số dư và thương khi chia một số nguyêncho một số nguyên khác, thuật toán Euclid phân tích một số ra thừa sốnguyên tố, thuật toán Lucas- Lehmer tìm số nguyên tố, thuật toán Millertìm số giả nguyên tố)

Trang 7

Chương 2 Lập trình và thực thi trên máy tính điện tử một sốthuật toán số học

Trình bày các chương trình có sẵn hoặc tự lập trình cho các thuật toán

đã nêu trong chương 1 Thực thi trên máy tính điện tử khoa học (Vinacal570ES Plus II), chương trình Pascal và chương trình tính toán trên Maple

Trang 8

Cơ sở lý thuyết của phép chia với dư là định lý về phép chia có

dư Định lý này được ứng dụng trong giải thuật Euclid tìm ước chung lớnnhất của hai số nguyên khác 0

Định lý về phép chia với dư: Với hai số tự nhiên a và b bất kì (a > b),bao giờ cũng tìm được duy nhất các số q và r sao cho a = qb + r, trong

Trang 9

q được gọi là thương khi chia a cho b.

r được gọi là số dư khi chia a cho b

b được gọi là số chia

a được gọi là số bị chia

Phép toán tìm q và r được gọi là phép chia với dư

Chứng minh

Trước tiên ta nhớ lại

Tiên đề Archimede Với mọi số thực x > 0 và mọi số thực y thì tồn tạimột số tự nhiên n sao cho nx > y

Hệ quả Với mọi số thực x < 0 và mọi số thực y thì tồn tại một số tựnhiên n sao cho nx < y

Nguyên lý sắp thứ tự tốt Mọi tập con khác rỗng các số tự nhiên đều

có phần tử bé nhất

Chứng minh định lý gồm hai phần: đầu tiên chứng minh sự tồn tại của q

và r, thứ hai, chứng minh tính duy nhất của q và r

Sự tồn tại

Xét tập hợp S = {a − nb, n ∈ Z}

Ta khẳng định rằngS chứa ít nhất một số nguyên không âm Có hai trườnghợp như sau

Nếu b < 0, thì −b > 0, và theo tính chất Archimede, có một số nguyên n

sao cho −bn ≥ −a, nghĩa là a − bn ≥ 0

Nếu b > 0, thì cũng theo tính chất Archimede, có một số nguyên n saocho bn ≥ −a, nghĩa là a − b (−n) = a + bn ≥ 0

Như vậy S chứa ít nhất một số nguyên không âm Theo nguyên lý sắp thứ

tự tốt, trong S có một số nguyên không âm nhỏ nhất, ta gọi số ấy là r.Đặt q = a − r

b , thì q và r là các số nguyên và a = qb + r Ta còn phải

Trang 10

chỉ ra rằng 0 ≤ r < |b| Tính không âm của r là rõ ràng theo cách chọn r.

Ta sẽ chứng tỏ dấu bất đẳng thức thứ hai

Giả sử ngược lại r ≥ |b| Vì b 6= 0, r > 0 nên b > 0 hoặc b < 0

Nếu b > 0, thì r ≥ b suy ra a − qb ≥ b Từ đó a − qb − b ≥ 0, lại dẫn tới

a − (q + 1) b ≥ 0

Đặt r0 = a − (q + 1) b thì r0 ∈ S và r0 = a − (q + 1) b = r − b < r, điềunày mâu thuẫn với tính chất r là phần tử không âm nhỏ nhất của S.Nếub < 0 thì r ≥ −b do đóa − qb ≥ −b Từ đó suy ra rằng a − qb + b ≥ 0,tiếp tục suy rar0 = a−(q − 1) b ≥ 0 Do đó,r0 ∈ S và vìr0 = r+bvớib < 0

ta có r0 = a − (q − 1) b < r, mâu thuẫn với giả thiết r là số nguyên không

âm nhỏ nhất trong S Như vậy ta đã chứng minh sự tồn tại của q và r.Tính duy nhất

Giả sử rằng tồn tại q, q0, r, r0 với 0 ≤ r, r0 < |b| sao cho a = q + r và

a = q0 + r0 Không mất tính tổng quát giả sử q ≤ r0

Từ hai đẳng thức trên ta có b q0 − q

= r − r0.Nếu b > 0 thì r0 ≤ r và r < b ≤ b + r0, và như vậy r − r0 < b Còn nếu

b < 0 thì r ≤ r0 và r0 < −b ≤ −b + r, và do đó − r − r0

< −b Trong cảhai trường hợp ta có r − r0 < |b|

Mặt khác đẳng thức b q0 − q

= r − r0 chứng tỏ rằng |b| chia hết

Trang 11

a = 1542014 = 1540000 + 2000 + 000 + 10 + 4.Lấy số154 (1540000) chia cho 135 được1, dư 1919 (190000).Hạ 2 (2000)

được 192 Chia 192 (192000) cho 135 được 1 dư 57 (57000) Hạ 0 (000)

được 570 Chia 570 (57000) cho 135 được 4 dư 30 (3000) Hạ 1 (10) được

301 Chia 301 (3010) cho 135 được 2 dư 31 (310) Hạ nốt 4 được 314 chia

135 được 2 dư 44

Vậy a = 1542014 = 135 × 11422 + 44

Thuật toán chia được thực hiện trong Bảng 1 dưới đây Thuật toán này

đã được lập trình để máy tính tự động thực hiện tính toán

là số nguyên tố được gọi là hợp số

Định lí 1.1 Mọi số tự nhiên đều có duy nhất một phân tích thành tíchcủa các thừa số nguyên tố, tức là mọi số tự nhiên a đều có thể viết đượcduy nhất dưới dạng a = pα1

1 pα2

2 pαn

n , trong đó p1, , pn là các số nguyên

Trang 12

tố, αi là các lũy thừa của pi.

Định lí 1.2 Mọi hợp số n đều có ước nguyên tố p ≤ √

n.Thuật toán Thuật toán đơn giản nhất phân tích một số a ra thừa sốnguyên tố là ta lần lượt kiểm tra số đó có là bội của các số nguyên tố pi

(pi lần lượt bằng 2, 3, 5, 7, 11, 13, 17, 19, 23, ) không Nếu có, ta được

a = bpαi

i Tiếp tục kiểm tra số xem b có là bội của pi+1 hay không, trong

đó pi+1 là số nguyên tố ngay sau pi trong bảng số nguyên tố

Sàng Eratosthenes là một giải thuật cổ xưa để lập bảng tất cả các sốnguyên tố nhỏ hơn một số n cho trước Giải thuật đầu tiên xóa số 1 rakhỏi tập các số nguyên tố Số tiếp theo số 1 là số 2, là số nguyên tố Bắtđầu từ số 2 xoá tất cả các bội của 2 ra khỏi bảng Số đầu tiên không bịxoá sau số 2 (số 3) là số nguyên tố Tiếp theo lại xoá các bội của 3 Giảithuật tiếp tục cho đến khi gặp số nguyên tố lớn hơn hoặc bằng √

n thìdừng lại Tất cả các số chưa bị xoá là số nguyên tố

Ví dụ 1.2 Phân tích số 29601 ra thừa số nguyên tố

Giải Rõ ràng 29601 không chia hết cho 2, cho 5, nhưng chia hết cho 3

29601 = 9687 × 3 Ta lại có 9687 = 3289 × 3

Vậy 29601 = 9687 × 3 = 3289 × 32

Vì 3289 không chia hết cho 3 nên ta kiểm tra xem 3289 có chia hết cho 7không Bấm máy ta được 3289 ÷ 7 = 469.8571429 Vậy 3289 không chiahết cho 7

Tiếp tục xem 3289 có chia hết cho 11 không Ta có: 3289 = 299 × 11

Vì 299 không chia hết cho 11 nên ta kiểm tra tiếp xem 299 có chia hết cho

13, 17, 19, 23 không Cuối cùng ta được 29601 = 32 × 11 × 13 × 23.Nhận xét Số 29601 không quá lớn và phân tích ra thừa số tương đối dễ(vì 29601 có các ước số nhỏ, chỉ là 3, 11, 13, và 23) Tuy nhiên thuật toán

Trang 13

phân tích ra thừa số nguyên tố được thực hiện bằng tay cho số 29601 cũng

đã khá vất vả Vì vậy hiện nay bài toán phân tích một số ra thừa số nguyên

tố, thường được thực hiện trên máy tính với những phần mềm dựa trêncác thuật toán phân tích nhanh một số ra thừa số nguyên tố

1.3 Thuật toán tìm ước số chung lớn nhất

Nếu số nguyên a chia hết cho số nguyên d, a được gọi là bội của

d Số nguyên dương d lớn nhất là ước của cả hai số nguyên a, b được gọi

là ước số chung lớn nhất, viết tắt là ƯSCLN, hay còn gọi tắt là ước chunglớn nhất, viết tắt là ƯCLN, của a và b (tiếng Anh: Greatest CommonDivisor-GCD) Ta thường kí hiệu ƯCLN của a và b là (a, b) Trong trườnghợp cả hai số nguyên a và b đều bằng 0 thì chúng không có ƯCLN vì khi

đó mọi số tự nhiên khác 0 đều là ước chung của a và b Nếu chỉ một tronghai số a hoặc b bằng 0, số kia khác 0, thì ƯCLN của chúng bằng giá trịtuyệt đối của số khác 0

1.3.1 Thuật toán Euclid

Thuật toán Euclid là một giải thuật giúp tính ước số chung lớn nhất(ƯSCLN) của hai số một cách hiệu quả Giải thuật này đã được biết đến

từ khoảng năm 300 trước Công nguyên Nhà toán học Hy Lạp Euclid đãviết giải thuật này trong cuốn sách toán nổi tiếng Elements

Trước tiên, ta nhớ lại tính chất sau Với mọi số nguyên k ta có

(a, b) = (a + kb, b) (1.3.1)Thật vậy, giả sử (a, b) = d Suy ra a = k1d, b = k2d trong đó (k1, k2) = 1

Ta có a + kb = k1d + kk2d = d (k1 + kk2) Dễ thấy (k1, k2) = 1 nên

(k1 + kk2, k2) = 1 Do đó (a + kb, b) = d (1.3.1) được chứng minh

Trang 14

Mô tả thuật toán Cho hai số nguyên không âm a và b không đồng thờibằng 0; kiểm tra nếu b bằng 0 thì a là ước chung lớn nhất Nếu không, ápdụng phép chia liên tiếp như sau (a = r0, b = r1)

Áp dụng công thức (1.3.1) ta có

(a, b) = (r0, r1) = (r1, r2) = (r2, r3) = = (rn−1, rn) = (rn, 0) = rn

Do đó, ước chung lớn nhất của a và b là số dư cuối cùng khác 0 trong quátrình chia lặp đi lặp lại ở trên.Thuật toán kết thúc và in ra kết quả là rn

Ví dụ 1.3 Tìm ước chung lớn nhất của 330 và 140

Theo thuật toán Euclid ta có

330 = 140.2 + 50,

140 = 50.2 + 40,

50 = 40.1 + 10,

40 = 10.4.Trong ví dụ trên ta có : (330, 140) = (140, 50) = (50, 40) = (40, 10) = 10.1.3.2 Thuật toán J Stein

Năm 1967, dựa trên thuật toán Euclid, J Stein đã xây dựng được mộtthuật toán khá thuận tiện để tìm ƯCLN trong trường hợp các số đã chođược viết dưới dạng nhị phân Ưu điểm chủ yếu của thuật toán này là takhông cần làm các phép tính chia (thực ra, ta có làm phép chia số chẵn

Trang 15

cho 2, nhưng trong cơ số 2 thì đó là phép dịch chuyển số đã cho sang phảimột vị trí) Thuật toán được thực hiện với các thao tác sau:

1) (a, 0) = a, trong trường hợp đặc biệt ta quy ước (0, 0) = 0

 Lặp lại bước này cho đếnkhi ít nhất một trong hai số a, b lẻ để tìm k là số mũ của 2

4) Nếuachẵn,blẻ thì(a, b) = a

2, b

 Tương tự với trường hợpalẻ,bchẵn.5) Nếu a, b đều lẻ thì (a − b) chẵn và |a − b| < max(a, b)

Trang 16

Ví dụ 1.4 Tính (512, 24)

Ta có ( 512, 24) = 2 (256, 12) = 22(128, 6) = 23(64, 3) = 23(32, 3) =

23(16, 3) = 23(8, 3) = 23(4, 3) = 23(1, 3) = 23(1, 1) = 23.1 = 8

1.3.3 Thuật toán Euclid mở rộng

Thuật toán này không những cho ta tìm ước chung lớn nhất của hai số a

và b mà còn cho ta biểu diễn nó dưới dạng tổ hợp tuyến tính của a và b.Nếu (a, b) = d, thì tồn tại hai số nguyên m, n sao cho d = ma + nb

Bổ đề: ƯCLN của các số nguyên a và b là số nguyên dương d nhỏ nhấtbiểu diễn được dưới dạng tổ hợp tuyến tính của a và b

Chứng minh Giả sử d là số nguyên dương nhỏ nhất biểu diễn được dướidạng d = ma + nb Ta cần chứng minh d là ƯCLN của a và b

Thật vậy, xét phép chia a = dq + r( 0 ≤ r < d)

Suy ra

r = a − dq = a − (ma + nb)q = (1 − m)a − nqb

Chứng tỏ r cũng là một tổ hợp tuyến tính của a và b Vì 0 ≤ r < d nên

r = 0 Như vậy d là ước của a Tương tự, d cũng là ước của b, suy ra d

là ước chung của a và b Lấy ước chung tùy ý d0 của a và b Dễ thấy d0 làước của d Vậy d chính là ƯCLN của a và b

Ngược lại, (a, b) = d, a = r0, b = r1 Theo thuật toán Euclid ta có

(r0, r1) = rn = rn−2 − rn−1qn−1 = rn−2 − (rn−3 − rn−2qn−2)qn−1 = =

mr0 + nr1 = ma + nb

Vậy ta có điều phải chứng minh

Thuật toán Euclid mở rộng

Cho hai số nguyên không âm u, v tìm (u1, u2, u3) sao cho

(u, v) = u3 = uu1 + vu2

Trang 17

Trong tính toán ta thêm các ẩn phụ (v1, v2, v3), (t1, t2, t3) sao cho luôn có:

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

Mô tả thuật toán [1]

Bước 1.( Xuất phát) Đặt (u1, u2, u3) ← (1, 0, u), (v1, v2, v3) ← (0, 1, v)

Bước 2 ( Kiểm tra v3 = 0?) Nếu v3 = 0 thuật toán kết thúc

Bước 3 ( Chia, trừ) Nếu v3 6= 0, đặt q ←hu3

v 3

i

, sau đó đặt

(t1, t2, t3) ← (u1, u2, u3) − q(v1, v2, v3),(u1, u2, u3) ← (v1, v2, v3), (v1, v2, v3) ← (t1, t2, t3),

và quay lại Bước 2

Ví dụ 1.5 Cho a = 2013, b = 122 Dùng thuật toán Euclid mở rộng ta cóBước 1 u1 = 1, u2 = 0, u3 = 2013, v1 = 0, v2 = 1, v3 = 122

Bước 2 q =



2013122



= 2, t1 = −2,t2 = 33,t3 = 0

u1 = 1, u2 = −16, u3 = 61, v1 = 1, v2 = 33, v3 = 0

Ta có biểu diễn 2013.1 − 16.122 = 61

1.4 Thuật toán tìm bội số chung nhỏ nhất

Bội số chung nhỏ nhất, viết tắt là BSCNN, hay còn gọi tắt làbội chung nhỏ nhất, viết tắt là BCNN (tiếng Anh: least common multiplehoặc lowest common multiple-lcm) của hai số nguyên a và b là số nguyêndương nhỏ nhất chia hết cho cả a và b Bội số chung của hai số a vàb được

kí hiệu là [a, b], BCNN(a, b) hoặc lcm(a, b)

Nếu a hoặc b bằng 0, thì không tồn tại số nguyên dương chia hết cho a và

b, khi đó quy ước rằng lcm(a, b) là 0

Trang 18

Định nghĩa trên được tổng quát hoá cho nhiều số nguyên dương: Bội chungnhỏ nhất của a1, a2, , an là số nguyên dương nhỏ nhất là bội số của

a1, a2, , an Kí hiệu tương tự cho bội số chung nhỏ nhất củaa1, a2, , an

là lcm(a1, a2, , an)

Tìm bội chung nhỏ nhất bằng cách tính qua ước chung lớn nhấtQuan hệ giữa bội số chung nhỏ nhất (LCM) và ước số chung lớn nhất(GCD) của hai số tự nhiên a và b được mô tả theo công thức sau

Trang 19

Tìm bội chung nhỏ nhất bằng cách phân tích ra thừa số nguyên tốĐịnh lý cơ bản của số học nói rằng mọi số nguyên dương lớn hơn 1 có thểbiểu diễn một cách duy nhất dưới dạng tích các số nguyên tố (nếu không

kể đến thứ tự của các thừa số) Như vậy, có thể coi hợp số cấu thành từcác số nguyên tố

Ví dụ 1.7 1988 = 2.2.7.71 = 22 7 71

Ở đây chúng ta có hợp số 1988 tạo thành bởi hai thừa số nguyên tố 2,một thừa số nguyên tố 7 và một thừa số nguyên tố 71 Kiến thức này giúpchúng ta tìm bội chung nhỏ nhất của một tập hợp các số

Ví dụ 1.8 Tìm bội chung nhỏ nhất của ba số 212, 88 và 2014

Đầu tiên, ta phân tích từng số thành tích lũy thừa của các số nguyên tố

212 = 22.53; 88 = 23.11; 2014 = 2.19.53

Với mỗi số nguyên tố, chọn lũy thừa cao nhất, tích của chúng cho ta giátrị bội chung nhỏ nhất cần tìm Bốn thừa số nguyên tố 2, 11, 19 và 53 cóbậc cao nhất lần lượt là 23, 111, 191 và 531

Do đó

LCM(212, 88, 2014) = 23.11.19.53 = 88616

Thuật toán này dựa trên thuật toán phân tích một số nguyên ra thừa sốnguyên tố, sau đó lấy tích của các thừa số nguyên tố với số mũ cao nhất.Tuy nhiên, ta chưa có thuật toán hiệu quả để phân tích một số nguyên rathừa số nguyên tố, vì vậy, về mặt thực tế, thuật toán vừa nêu không thực

sự hiệu quả Mặc dầu vậy, nó khá đơn giản để minh họa khái niệm

Trang 20

1.5 Thuật toán Lucas - Lehmer tìm số nguyên tố

Trong số học thuật toán, kiểm tra Lucas–Lehmer là phép kiểmtra tính nguyên tố đối với số tự nhiên n, nó đòi hỏi rằng có một thừa sốnguyên tố của n − 1 là đã biết Nếu tồn tại số a nhỏ hơn n và lớn hơn 1

là số thoả mãn

an−1 ≡ 1 (modn) và an−1q 6≡ 1(modn).Với mọi ước nguyên tố q của n − 1, thì n là số nguyên tố Nếu không tìmthấy số a như vậy thì n là hợp số

Ví dụ 1.9 Với n = 71, n − 1 = 70 = 2 × 5 × 7

Lấy a = 11 trước hết: 1170 ≡ 1(mod 70)

Kiểm tra với các ước của 70 ta có

1135 ≡ 70 6≡ 1 (mod 71),

1114 ≡ 54 6≡ 1 (mod 71),

1110 ≡ 31 6≡ 1 (mod 71)

Vậy 71 là số nguyên tố

Số Mersenne và kiểm tra Lucas- Lehmer

Số Mersenne là số có dạng 2p− 1, trong đó p là số nguyên tố

Người ta đã tìm thấy khá nhiều số nguyên tố Mersenne: 22 − 1, 23 − 1,

Trang 21

Việc tìm ra số nguyên tố Mersenne được coi là rất khó khăn trước đây.Phương pháp tốt nhất để kiểm tra tính nguyên tố của các số Mersenneđược dựa vào sự tính toán một dãy tuần hoàn, được phát biểu đầu tiênbởi Lucas năm 1878 và chứng minh bởi Lehmer vào những năm 1930.Kiểm tra Lucas-Lehmer với số Mersenne

Cho p là số nguyên tố lẻ, Mp = 2p− 1, chuỗi Si với i ≥ 0 được xác địnhbởi S1 = 4, Si+1 = Si2 − 2(modMp)

Trang 22

S10 = 2822 − 2(mod2047) = 79522(mod2047) = 1736.

Vì S10 > 0 nên M11 = 211 − 1 = 2047 không là số nguyên tố Mersenne

(2047 = 23 × 89)

Đã có các thuật toán nhanh để tìm số nguyên tố Mersenne, do đó hiện nay

đã biết các số nguyên tố Mersenne rất lớn Bốn số nguyên tố Mersenneđầu tiên M2 = 3, M3 = 7, M5 = 31 và M7 = 127 đã được biết từ cổ xưa

Số thứ năm, M13 = 8191, được tìm thấy vào trước năm 1461 Hai số tiếptheo M17 và M19 tìm thấy bởi Cataldi vào năm 1588 Sau hơn một thế kỷ

M31 được kiểm tra bởi Euler vào năm 1750 Số tiếp theo (trong Lịch sửkhông theo thứ tự số ) là M127 do Lucas tìm thấy vào năm 1876, sau đó

M61 do Pervushin tìm vào năm 1883 Hai số nữa M89 và M107 được tìmthấy vào thế kỷ 20, bởi Powers vào năm 1911 và 1914

Việc tìm các số nguyên tố Mersenne thực sự được cách mạng bởi cácmáy tính điện tử số Thành công đầu tiên của tư tuởng này thuộc về sốnguyên tố Mersenne, M521, nhờ nỗ lực khéo léo vào lúc 10:00 P.M ngày30-1, 1952 khi sử dụng máy tính tự động Western U.S National Bureau ofStandards (SWAC) tại Institute for Numerical Analysis thuộc University

of California, Los Angeles, dưới sự điều khiển trực tiếp của Lehmer, sửdụng chương trình viết và chạy bởi Prof R.M Robinson Nó là số nguyên

tố Mersenne đầu tiên tìm thấy sau 38 năm Số tiếp theo, M607, đã đượctìm thấy do Computer này sau gần hai giờ chạy máy Ba số tiếp theo

M1279, M2203, M2281 đã được tìm thấy với cùng chương trình trên saunhiều tháng nữa M4253 là số nguyên tố Mersenne đầu tiên là số nguyên

tố siêu lớn trên 1000 chữ số thập phân (Titanic) Và M44497 là số nguyên

tố đầu tiên có trên 10.000 chữ số thập phân (Gigantic) Chưa khẳng địnhđược có số nguyên tố Mersenne nào nằm giữa số thứ 40 (M20996011) và

Trang 23

48 (M57885161) trong bảng mà chưa được phát hiện hay không, do đó thứ

tự các số đó là tạm thời Một ví dụ là số thứ 29 được phát hiện ra sau

số thứ 30 và 31, số thứ 46 cũng được công bố trước số 45 chỉ có 2 tuần.Đến tháng 2-2013, chỉ mới biết 48 số nguyên tố Mersenne Số lớn nhất

đã biết là số M57885161 với 17 425 170 chữ số Cũng như nhiều số nguyên

tố Mersenne trước đó, nó được tìm ra nhờ dự án Distributed Computingtrên Internet, được biết với tên gọi Great Internet Mersenne Prime Search[GIMPS] Theo Lịch sử không theo thứ tự số, để hình dung độ lớn của sốnguyên tố lớn nhất được tìm thấy (số thứ 48), cần có 4647 trang giấy A4

để biểu diễn số đó với các chữ số trong hệ cơ số 10, 75 chữ số một dòng và

50 dòng một trang Nếu dùng giấy định lượng 70g/m2, sẽ cần hơn 10 kg

giấy (2.324 tờ) để in thành tập dày khoảng 20 cm

1.6 Thuật toán Miller tìm số giả nguyên tố

Theo định lý Fermat bé,p là một số nguyên tố, thì với số nguyên

a bất kì không chia hết p ta có

Định nghĩa 1.1 Cho a là một số nguyên dương Nếu n là hợp số nguyêndương và an ≡ a (modn)thì nđược gọi là số giả nguyên tố cơ sở a Trongtrường hợp (n, a) = 1, ta thường dùng định nghĩa tương đương

Ví dụ 1.12 Số 561= 3 11 17 là số giả nguyên tố cơ sở 2

Thật vậy , áp dụng định lý Fermat bé ta có

2560= 22280 ≡ 1(mod 3),

Trang 24

Giả sử n là một số giả nguyên tố cơ sở 2, ta sẽ chứng minh N = 2n − 1

cũng là số giả nguyên tố cơ sở 2

Vậy N là số giả nguyên tố cơ sở 2

Như vậy, để kiểm tra một số có phải là số nguyên tố hay không,trước tiên

ta kiểm tra xem nó có là số giả nguyên tố cơ sở 2 hay không sau đó kiểmtra tiếp tục với các cơ sở khác Tuy nhiên, tồn tại các số giả nguyên tố vớimọi cơ sở, đó là các số Carmichael

Số Carmichael Hợp số nguyên n là số giả nguyên tố Fermat với mọi cơ

số nguyên dương a sao cho (a, n) = 1 được gọi là số Carmichael

Ví dụ 1.13 Số nguyên 561 = 3 11 17 là một số Carmichael

Thật vậy,vớia tùy ý, (a, 561) = 1 thì suy ra (a, 3) = (a, 11) = (a, 17) = 1

Trang 25

Từ đó suy ra a560 ≡1(mod 561) Vậy 561 là số Carmichael.

Số Carmichael khá hiếm, chỉ có 7 số nhỏ hơn 10000: 561, 1105, 1729, 2465,

2821, 6601, 8911

Kiểm tra Miller và số giả nguyên tố mạnh

Giả sử n là số nguyên dương lẻ, n − 1 = 2st, trong đó s là số nguyênkhông âm, t là số nguyên dương lẻ Ta nói n trải qua được kiểm tra Miller

cơ sở a nếu at ≡ 1(mod n) hoặc a2jt ≡ −1(modn), với 0 ≤ j ≤ s − 1.Định nghĩa 1.2 Số nguyên n được gọi là số giả nguyên tố mạnh cơ sở a

nếu nó là hợp số và trải qua được kiểm tra Miller cơ sở a

Ví dụ 1.14 2047 là số giả nguyên tố mạnh cơ sở 2

Thật vậy, 2047 = 23 89, n − 1 = 2.1023, s = 1, t = 1023,

22046 ≡ 1(mod2047)suyra 22t ≡ 1(mod2047)

Như vậy 2047 trải qua được kiểm tra Miller cơ sở 2

Định lý 1.4 Có vô số số giả nguyên tố mạnh cơ sở 2

Thật vậy, giả sử n là số giả nguyên tố cơ sở 2 Đặt N = 2n− 1, khi đó

N − 1 = 2n− 2 = 2(2n− 1) = 2st, s = 1, t = 2n − 1

Trang 26

Với số nguyên k lẻ nào đó ta có n = km, 2n−1 ≡ 1(modn), tồn tại sốnguyên l sao cho

2n−1 − 1 = ln

Ta có N = 2km − 1 = (2k − 1)(2k(m−1) + + 1) , N là hợp số Lại có

2N −12 = 22n−1−1 = (2n)l − 1 ≡ 1(modN )

N trải qua được kiểm tra Miller cơ sở 2

Vậy với mỗi số giả nguyên tố n, ta xây dựng được một số giả nguyên tốmạnh N

Định lý 1.5 (xem[5], trang 37) Nếu n là hợp số dương lẻ thì tồn tại khôngquá n − 1

4 cơ sở a sao cho n trải qua được kiểm tra Miller với các cơ sở

đó với 1 ≤ a ≤ n − 1

Từ định lý trên suy ra rằng, nếu số a được chọn ngẫu nhiên trong khoảng

1 ≤ a ≤ n − 1 thì n trải qua được kiểm tra Miller cơ sở a với xác suất

bé hơn 1

4. Như vậy, nếu ta chọn k số ngẫu nhiên thì xác suất để n trải

qua kiểm tra Miller đối với k cơ sở đó sẽ bé hơn 1

4k Khi k đủ lớn, ví dụ

k = 20, xác suất đó quá nhỏ, nên n trải qua với 20 cơ sở ngẫu nhiên thì cóthể tin rằng n là số nguyên tố Từ đó ta có thuật toán xác suất sau đây:Thuật toán (Rabin-Miller 1980)

Thuật toán sau đây xác định rằng một số lẻ n ≥ 3 là một hợp số hoặc in

ra thông báo n là số nguyên tố với xác suất lớn hơn 1 − 1

420.Bước 1 (Xuất phát) Phân tích n − 1 = 2s d trong đó s ≥ 1 và d là số tựnhiên lẻ Sau đó đặt c ← 20

Bước 2 Chọn ngẫu nhiên số tự nhiên a trong khoảng 1 < a < n Đặt

b ← ad mod n Nếu b = 1, chuyển sang Bước 4

Bước 3 ( Bình phương) Nếu b 6= ±1, ta đặt b ← b2(modn) Nếu b 6= ±1,

Trang 27

in ra thông báo “n là hợp số” và kết thúc thuật toán.

Bước 4 Đặt c ← c − 1 Nếu c > 0, chuyển sang Bước 2 Nếu c = 0, in rathông báo “n là số nguyên tố” và kết thúc thuật toán

Ví dụ 1.15 Lấy ngẫu nhiên 20 số tự nhiên a1, a2 .a20 Muốn biết số n

có là số nguyên tố hay không ta kiểm tra xemncó trải qua kiểm tra Millervới các cơ sở a1, a2 hay không

Nếu ∃ j ≤ 20 mà n không trải qua kiểm tra Miller với cơ sở aj thì n làhợp số

Nếu n trải qua kiểm tra Miller với cơ sở a1, a2 .a20 thì kết luận n lànguyên tố

Chẳng hạn, để kiểm tra xem n = 221 có là số nguyên tố hay không ta viết

Trang 28

1.7 Một số thuật toán trong mật mã công khai

Trước những năm 70 của thế kỉ XX, Số học vẫn được xem làmột trong những ngành toán học thuần túy, chỉ có ý nghĩa lý thuyết.Cách đây khoảng 30 năm, khó có thể hình dung được rằng, một số kếtquả lý thuyết số trong Số học lại làm nên một cuộc cách mạng trong bảomật thông tin Cơ sở của những ứng dụng đó lại chính là Số học thuậttoán Ở đây tôi chỉ trình bày ứng dụng của Số học trong mã mũ và hệ RSA

1.7.1 Mã mũ

Hệ mã này được Pohlig và Hellraman đưa ra năm 1978

Thuật toán Giả sử p là một số nguyên tố lẻ, và chọn khóa lập mã e làmột số nguyên dương sao cho (e, p − 1) = 1 Để mã hóa một thông báo,trước tiên ta chuyển các chữ cái thành dạng các chữ số tương ứng (thêm

số 0 vào trước những số có một chữ số) Ta dùng bảng sau đây:

p Giả sử p là số nguyên tố trong khoảng 2929 < p < 292929 Mỗi chữcái được biểu diễn bằng một số không vượt quá 29 Một số có m chữ cái

sẽ được biểu diễn bằng một số không vượt quá m lần số 29 viết liên tiếp.Như vậy, để đảm bảo số đó luôn luôn nhỏ hơn p, m chỉ có thể là 1 hoặc 2

Ta lấy m = 2

Trang 29

Công thức lập mã đối với một khối P trong văn bản.

C ≡ Pe(modp), 0 ≤ P < p

Văn bản mật sẽ chứa những khối chữ số là các số nguyên tố nhỏ hơn p

Ví dụ 1.16 Ta cần mã hóa thông báo sau:

VÊ NHA NGAYGiả sử p= 3137 và khóa lập mã e = 31, như vậy

(e, p − 1) = (31, 3136) = 1.Trong trường hợp này, m = 2 và ta nhóm văn bản nhận được khi chuyểnsang chữ số thành từng nhóm bốn chữ số

2708 1611 0116 1001 2928

Để khối cuối cùng đủ bốn chữ số, ta thêm chữ X trong văn bản (có thểthay chữ X bằng bất kỳ chữ cái nào không gây hiểu nhầm) Tiếp theo tachuyển khối P trong văn bản thành các khối C trong văn bản mật theocông thức sau:

C ≡ P31(mod3137), 0 ≤ C < 3137.Chẳng hạn, để mã hóa khối đầu tiên ta tính: C ≡ 270831(mod3137) Đểtính được C một cách nhanh chóng ta dùng thuật toán bình phương liêntiếp Trước tiên ta viết 31 dưới dạng cơ số 2 Tính toán đơn giản cho ta

Để giải mã khối C trong văn bản mật, ta cần biết khóa giải mã d Đó

là số d thỏa mãn de ≡ 1(modp − 1), có nghĩa d là một nghịch đảo của e

Trang 30

modulo p − 1 Nghịch đảo đó tồn tại do giả thiết (e, p − 1) = 1 Để tìmlại được khối C trong văn bản, ta chỉ việc nâng khối C lên lũy thừa d

Như vậy, ta có : 607.31 – 6.3136 = 1 suy ra 607.31 ≡ 1 (mod3136) Vậy

d = 607 Để giải mã khối C ta dùng công thức P ≡ C607(mod3136)

1.7.2 Hệ mã RSA

Hiện nay nhiều tổ chức quân sự, kinh tế, tài chính hay các cơ quan chínhphủ khi truyền đi các tin tối mật thường sử dụng một loại mật mã gọi làmật mã công khai, viết tắt là RSA, do ba nhà khoa học Rivest, Shamir vàAdleman đề xuất Ưu điểm nổi bật của mã RSA là không cần giữ bí mật

Trang 31

phương pháp mã hoá và giải mã cũng như chìa khoá mã hoá Chỉ cần giữ

bí mật chìa khoá giải mã là đủ Chính vì vậy mà mật mã RSA có tên gọi

là mật mã khoá công khai (public key cryptography)

Ý tưởng

Mật mã khoá công khai được xây dựng trên cơ sở mã mũ và dựa trên tínhkhó của bài toán phân tích các số lớn ra thừa số nguyên tố Biết một số sốnguyên tố nhân với nhau để thu được hợp số thì dễ còn biết hợp số, phântích nó ra thành các thừa số nguyên tố là rất khó Giả sử ta cần chuyểnmột bức điện Trước tiên ta chuyển các chữ cái thành các số tương ứngtheo một từ điển nào đó với một số chẵn chữ số Chẳng hạn theo từ điểnASCII (American Standart Code for information Interchange) đang được

sử dụng rộng rãi trong các mạng thông tin thì a → 97, g → 71, u → 117

Để mã hóa một khối văn bảnP, ta lập khốiC trong văn bản mật theo cáchsau: Lấy hai số nguyên tố khá lớn p, q, nhân chúng với nhau để được số

n = p.q Chọn một số e sao cho (e, φ(n)) = 1, trong đó φ(n) là hàm Euler

Hàmφ (n) được tính không mấy khó khăn khi đã biết công thức phân tích

ra thừa số nguyên tố của n Cụ thể là nếu đã biết n = p.q (p, q là hai sốnguyên tố) thì

φ (n) = (p − 1) (q − 1)

Trang 32

Nhưng do bí mật nên việc tìm được d là vô cùng khó Cặp số (d, n) gọi làkhoá giải mã.

Mô tả thuật toán

- Chọn hai số nguyên tố lớn p và q Tính n = p.q và m = φ (n) =(p − 1) (q − 1)

- Chọn 1 ≤ e ≤ m − 1, sao cho gcd(e, m)=1

- Tìm d sao cho ed ≡ 1(modm), giải theo thuật toán Euclid mở rộng

⇒ Khoá công khai (Public key) là (e, n)

⇒ Khoá dùng riêng (Private key) là (d, p, q)

Các vấn đề xung quanh thuật toán RSA

Vấn đề chọn p và q

p và q phải là những số nguyên tố lớn (ít nhất là cỡ khoảng 200 chữ số),

p và q phải lớn cỡ xấp xỉ nhau

Bài toán tìm số nguyên tố lớn

Một thuật toán để tạo ra tất cả các số nguyên tố là không tồn tại, tuynhiên lại có khá nhiều các thuật toán để kiểm tra xem một số cho trước

có phải là số nguyên tố hay không (Bài toán kiểm tra tính nguyên tố)

Vì vậy việc tìm số nguyên tố lớn cho RSA là một vòng lặp

Bước 1: Chọn một số ngẫu nhiên p nằm trong một khoảng có độ lớn yêucầu (tính theo bit)

Bước 2: Kiểm tra tính nguyên tố của p, nếu là nguyên tố thì dừng lại, nếukhông thì quay lại Bước 1 Những thuật toán để kiểm tra tính nguyên tốkhông phải đơn giản, nó đòi hỏi độ phức tạp tính toán khá lớn Tuy nhiênngười ta có thể sử dụng các thuật toán đoán xem một số có phải là nguyên

tố hay không với một xác suất sai nhất định Xác suất này càng nhỏ nếuthời gian bỏ ra chạy chương trình càng lớn

Trang 33

Giải thuật Euclide mở rộng tìm nghịch đảo theo modul n

Chúng ta đã biết thuật toán Euclide nổi tiếng tìm ước số chung lớn nhấtvới hai số tự nhiên n1, n2 Việc tính giá trị nghịch đảo của một số w

theo modul n được dùng nhiều trong các bài toán mã hoá khoá công khai.Thuật toán tìm x = w−1 theo modul n được gọi là thuật toán GCD mởrộng hay Euclide mở rộng Sở dĩ như vậy là vì khi đi tìm ước số chungGCD(n1, n2) của hai số n1, n2 người ta sẽ tính luôn các giá trị a, b

sao cho

GCD (n1, n2) = a.n1 + b.n2

Như vậy nếu biết (n1, n2) = 1 thì thuật toán này sẽ cho ta tìm được a, b

thoả mãn a.n1+ b.n2 = 1 vàn1 chính là nghịch đảo của a theo modulo n2

1.8 Một số thuật toán khác

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

Để nhân hai số nguyên, ta sử dụng tính chất đơn giản của phép nhân.Nếu a = a1 + a2, b = b1 + b2 thì ab = a1b1 + a2b2 + a1b2 + a2b1.Như vậy, thay cho việc nhân hai số nguyên n bít (trong hệ nhị phân,hoặc số chữ số trong hệ thập phân) thì thuật toán được học từ thời phổthông này cần sử dụng một số phép tính cộng và nhân bằng bảng cửuchương để tính ra kết quả cuối cùng (phép nhân a với b đã là phép cộng b

lần số a)

Ví dụ 1.18 Tính tích 123.345

123.345 = 123.(300 + 40 + 5) = 123.300 + 123.40 + 123.5

= 36900 + 4920 + 615 = 42435

Trang 34

Tuy nhiên để có một thuật toán nhân nhanh, ta không thể cộng b lần số a

mà phải tìm được một cách tối ưu để tách b và a thành những phần nhỏhơn Thuật toán trình bày dưới đây cho chúng ta một số cách để phânchia như vậy

1.8.2 Thuật toán Karatsuba - Ofman

Xét bài toán nhân hai số nguyên n chữ số X và Y Theo giải thuật nhânhai số thông thường thì cần n2 phép nhân và n phép cộng nên tốn O(n2)thời gian Karatsuba - Ofman đã áp dụng kỹ thuật chia để trị để tăng tốcthuật toán nhân hai số nguyên này

Giả sử muốn nhân hai số nguyên 2n bit,

Trang 35

và chương trình Maple Các vấn đề trình bày trong chương này được thamkhảo và trích dẫn từ tài liệu [5], [1].

2.1 Tìm thương và số dư

2.1.1 Tìm thương và số dư khi chia một số tự nhiên a cho một số

tự nhiên b trên Vinacal 570ES Plus II

Do đã được lập trình sẵn, Vinacal 570ES Plus II có thể giải bài toán tìmthương và số dư khi chia một số tự nhiên a cho một số tự nhiên b chỉ bằngmột lệnh (một thao tác) như sau

Trước tiên bấm phím ON để mở máy

Vào các tính năng vượt trội của Vinacal 570ES Plus II bằng cách bấmphím: SHIFT 6 (VINACAL)

Trang 36

6: MinMax (tìm giá trị lớn nhất và nhỏ nhất của hàm bậc hai).

Bấm tiếp phím 1 Trên màn hình hiện: Q r(

Khai báo số bị chia trước, đánh dấu phẩy bằng cách bấm phím SHIFT, , khai báo tiếp số chia, bấm phím = để được kết quả trên màn hình:Q= (Số thương Q=); r= (Số dư r=)

Ví dụ 2.1 (Đề thi học sinh giỏi Giải toán trên máy tính cấp khu vực, BộGiáo dục và Đào tạo, lớp 6, 7, 2001)

a) Tìm thương và số số dư khi chia 18901969 cho 2382001;

b) Tìm thương và số dư khi chia 3523127 cho 2047

Cách giải 1 (trên Vinacal 570 ES Plus II)

b) Bấm phím

SHIFT 6 1 3523127 SHIFT , ,2047 = (Q=1721, R=240)

Vậy 3523127 chia cho 2047 được thương là 1721 và số dư là 240

Trang 37

Nhận xét 1 Sau khi bấm phím SHIFT 6 1 , chỉ bằng một thao táckhai báo các số bị chia và số chia, ta có ngay kết quả Với các máy tínhkhác hoặc với chính Vinacal 570 ES Plus II (mà không dùng SHIFT

6 1 ), ta phải sáng tạo vòng vèo (thủ công, không cần thiết) như sau.Cách giải 2 Lần lượt trừ số bị chia cho số chia cho tới khi được số nhỏhơn số chia, chính là số dư (trước khi trừ đưa số chia vào ô A để sử dụngnhiều lần)

2382001 SHIFT STO A 18901969 - ALPHA A = (16519968)

- ALPHA A = (14137967) ALPHA A = (11755966)ALPHA A = (9373965) ALPHA A = (6991964) ALPHA

A = (4609963) ALPHA A = (2227962)

Cách giải 3 Chia số bị chia cho số chia để tìm thương, rồi tìm số dư bằngcách trừ số bị chia cho tích của phần nguyên của thương và số chia (Phầnnguyên của 7.93532101 bằng 7)

2382001 SHIFT STO A 18901969 ÷ (7.93532101) × ALPHA

Cách giải 3 sử dụng công thức a = b × c = b × [c] + r, trong đó[c] là phầnnguyên của c Trước tiên ta đưa b vào ô nhớ B để sử dụng nhiều lần, sau

đó chia a cho b để được c (và nhìn màn hình để được phần nguyên [c]),rồi nhân lại với b (bằng cách gọi số b từ ô nhớ B nhờ ALPHA B )

để được lại a, sau đó trừ đi b × [c] (bấm phím [c] × ALPHA B ) để

Trang 38

Ví dụ 2.2 Tìm a, b, c biết số 21a2b1509c chia hết cho 504.

Cách giải 1 (Toán kết hợp với máy tính) Vì 504 = 7 × 8 × 9 nên để

21a2b1509c chia hết cho 8 thì ba số tận cùng 09c phải chia hết cho 8 Để

9c chia hết cho 8 thì c chỉ có thể bằng 6 Số cần tìm có dạng 21a2b15096

Để số đã cho chia hết cho 9 thì 26 + a + b = 18 + 8 + a + b phải chiahết cho 9, tức là a + b + 8 = 9 hoặc a + b + 8 = 18 Suy ra a + b = 1

hoặca+b = 10 Thử tất cả các trường hợp trên máy tính, ta có kết quả sau:

a b Số đã cho Thương (÷504) Dư Kết luận

Trang 39

Cách giải 2 (Suy luận toán học) Ta có

Vì số đã cho đồng thời phải chia hết cho 9 nên a và b đồng thời phải thỏamãn hai điều kiện: a + b = 1 hoặc a + b = 10 và 3a − 2b + 6 bằng mộttrong các số: 0, 7, 14, 21, 28

Trường hợp 1 Hệ 3a − 2b + 6 = 0 và a + b = 1 không có nghiệm nguyên.Trường hợp 2 Hệ 3a − 2b + 6 = 7 và a + b = 1 không có nghiệm nguyên.Trường hợp 3 Hệ3a − 2b + 6 = 14 và a + b = 1 không có nghiệm nguyên.Trường hợp 4 Hệ3a − 2b + 6 = 21 và a + b = 1 không có nghiệm nguyên.Trường hợp 5 Hệ3a − 2b + 6 = 28 và a + b = 1 không có nghiệm nguyên.Trường hợp 6 Hệ3a − 2b + 6 = 0 vàa + b = 10 không có nghiệm nguyên.Trường hợp 7 Hệ3a − 2b + 6 = 7 vàa + b = 10 không có nghiệm nguyên.Trường hợp 8 Hệ3a−2b+6 = 14 vàa+b = 10không có nghiệm nguyên.Trường hợp 9 Hệ3a − 2b + 6 = 21 và a + b = 10 có nghiệm a = 7, b = 3.Trường hợp 10 Hệ 3a − 2b + 6 = 28 và a + b = 10 không có nghiệmnguyên

Đáp số: Số cần tìm là 2172315096

Nhận xét 5 Sử dụng máy tính hay hơn Ta đã không phải suy nghĩ gì

về điều kiện chia hết cho 7, mà dùng máy tính để kiểm tra nó ! Trong

Trang 40

Cách 2, ta cũng vẫn phải sử dụng máy tính trợ giúp các phép toán trunggian (tìm phần dư của 1108019872 khi chia cho 7, ).

Tìm thương và số dư khi chia một số tự nhiên a cho một số tựnhiên b khi a vượt quá 10 chữ số (vượt quá khả năng hiển thị củamáy tính bỏ túi)

Ví dụ 2.3 (Thi học sinh giỏi cấp khu vực, Bộ Giáo dục và Đào tạo Trunghọc Cơ sở, 2006)

Tìm số dư trong mỗi phép chia sau:

ON SHIFT 6 1 30419753041975 SHIFT , 151975 =

thì máy sẽ báo lỗi: trên màn hình hiện

Math ERROR (lỗi về toán)

[AC]: Cancel

[/][.]: Go to

Tức là: Bấm phím AC để xóa bỏ lệnh trên (và làm lại từ đầu), hoặc:Bấm một trong hai phím [/][.] để trở về biểu thức đã khai báo và sửa dữliệu Với những bài toán (như câu b hoặc câu c) mà số bị chia vượt quá

... nhỏ số n cho trước Giải thuật xóa số rakhỏi tập số nguyên tố Số số số 2, số nguyên tố Bắtđầu từ số xoá tất bội khỏi bảng Số khơng bịxố sau số (số 3) số nguyên tố Tiếp theo lại xoá bội Giảithuật... data-page="28">

1.7 Một số thuật tốn mật mã cơng khai

Trước năm 70 kỉ XX, Số học xem làmột ngành tốn học túy, có ý nghĩa lý thuyết. Cách khoảng 30 năm, khó hình dung rằng, số kếtquả lý thuyết số Số học...

Thuật toán dựa thuật toán phân tích số ngun thừa sốngun tố, sau lấy tích thừa số nguyên tố với số mũ cao nhất.Tuy nhiên, ta chưa có thuật tốn hiệu để phân tích số nguyên rathừa số nguyên

Ngày đăng: 17/09/2014, 12:37

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w