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

Một phần của tài liệu Các thuật toán cơ bản trong lý thuyết số (Trang 55 - 64)

2 Lập trình và thực thi trên máy tính một số thuật toán số

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

2.3.1 Tính toán trên máy tính điện tử khoa học Vinacal 570ES Plus II

Ví dụ 2.20 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ó 9867 = 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 7 không. Bấm máy ta được: 3289:7=469.8571429. Vậy 3289 không chia hết cho 7.

Tiếp tục xem 3289 có chia hết cho 11 không: 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 8

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 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ên các thuật toán phân tích nhanh một số ra thừa số nguyên tố.

Phân tích một số ra thừa số nguyên tố trên Vinacal 570ES Plus II Một trong những ưu điểm nổi trội nhất của Vinacal 570 ES Plus II so với các máy tính khoa học (máy tính bỏ túi) khác là chương trình phân tích một số ra thừa số nguyên tố đã được cài đặt trong máy.

Để phân tích một số ra thừa số nguyên tố, ta lần lượt thực hiện các thao tác sau. Mở máy bằng phím ON , vào các tính năng vượt trội của Vinacal 570ES Plus II bằng cách bấm phím: SHIFT 6 . Bấm tiếp phím 4 . Trên màn hình hiện: Fact( (factor-phân tích ra thừa số nguyên tố). Khai báo số đã cho. Bấm phím = để được kết quả.

Ví dụ 2.21 Phân tích số 8824575375 ra thừa số nguyên tố. Giải Thực hiện qui trình bấm phím

ON SHIFT 6 4 8824575375 = (35 ×53 ×74 ×112) Ví dụ 2.22 Phân tích số 7396812423 ra thừa số nguyên tố. Giải Thực hiện qui trình bấm phím

ON SHIFT 6 4 7396812423 = (32 ×7×11×19×59×547) Nhận xét 9 Với khả năng tính toán nhanh của các vi mạch điện tử, sau khi bấm phím = , Vinacal 570 ES Plus II lập tức có thể phân tích một số khá lớn dưới 10 chữ số ra các thừa số nguyên tố có ba chữ số.

Nhận xét 10 Tuy nhiên, chương trình Vinacal 570ES Plus II cũng còn có hạn chế: Vinacal 570 ES Plus II chưa thể phân tích các số có chứa các

số nguyên tố lớn hơn bốn chữ số ra thừa số nguyên tố.

Ví dụ 2.23 (Thi học sinh giỏi Giải toán trên máy tính, Tỉnh Thừa Thiên- Huế, Trung học cơ sở, 2006-2007)

Phân tích số 9405342019 thành thừa số nguyên tố. Giải Thực hiện qui trình bấm phím

ON SHIFT 6 4 9405342019 = (193 ×(1371241))

Thoạt nhìn, ta sẽ tưởng 1371241 là số nguyên tố. Nếu sử dụng Maple, ta thấy

[> ifactor(1371241);

11712

Vậy, 1371241 được phân tích ra thừa số nguyên tố là 1371241 = 11712. Cố gắng thử phân tích 1371241 ra số nguyên tố trên Vinacal 570ES Plus II

ON SHIFT 6 4 1371241 = (1371241)

Như vậy, do hạn chế về lập trình hoặc bộ nhớ, Vinacal 570ES Plus II chưa có khả năng phân tích một số chứa các số nguyên tố trên bốn chữ số. Tuy nhiên, Vinacal 570ES Plus II cũng đã cảnh báo chuyện này bằng cách để các thừa số đó trong ngoặc. Ví dụ, kết quả phân tích số 9405342019 trên Vinacal 570ES Plus II là 193 ×(1371241). Số 193 không để trong ngoặc, nghĩa là đó là lũy thừa của số nguyên tố, còn số (1371241) được để trong ngoặc, nghĩa là nó có thể là hợp số chứa các số nguyên tố có nhiều hơn ba chữ số.

Thử khai căn 1371241 ta được 1371241 = 11712. Vì √

1171 ≈ 34.2 nên ta chỉ cần kiểm tra xem 1171 có chia hết cho các số nguyên tố 7, 11, 13, 19, 23, 29, 31 không. Ta thấy 1171 không chia hết cho

các số trên nên nó là số nguyên tố. Vậy

9405342019 = 193 ×(1171)2.

2.3.2 Lập trình trên chương trình Pascal (adsbygoogle = window.adsbygoogle || []).push({});

Thuật toán phân tích một số ra thừa số nguyên tố tương tự như thuật toán kiểm tra số nguyên tố. Điểm khác ở đây là khi kiểm tra số nguyên tố ta phải lần lượt kiểm tra các số nhỏ hơn sqrt(n) (căn bậc hai của n) có phải là ước của n hay không, còn khi phân tích ta chỉ việc chia n cho các số nguyên bắt đầu từ số nguyên tố nhỏ nhất là 2. Khi không chia được nữa thì ta tăng số chia lên 1 đơn vị, quá trình phân tích kết thúc khi n

bằng 1.

PROGRAM phan tich mot so ra thua so nguyen to; USES crt;

VAR n,i:longint; BEGIN

Clrscr;

write(’nhap vao 1 so:’); write;

readln(n);

writeln( ’ket qua phan tich ’) i:=1;

write(n,’=’); While n>1 do Begin

inc(i);

Begin n:= n div i; write(i); if n>1 then write(’.’); End; End; Readln; END.

Ví dụ 2.24 Nhập vào từ bàn phím số tự nhiên n (n < 1000). Hãy phân tích n thành tích các thừa số nguyên tố.

Chẳng hạn, nhập vào số n= 145

Chạy chương trình trên Pascal ta có Nhap vao 1 so: n =145

Ket qua phan tich 145= 5.29

2.3.3 Tính toán trên Maple

Theo thuật toán Euclid thì mọi số bất kỳ đều có thể phân tích được ra các thừa số nguyên tố, tức là viết được dưới dạng tích của các số nguyên tố. Tuy nhiên việc phân tích một số lớn ra thừa số nguyên tố (hoặc chứng tỏ nó là số nguyên tố) rất vất vả, thậm chí không thể, vì nó đòi hỏi khá nhiều phép tính chia. Nhờ Maple, ta chỉ cần một lệnh ifactor để làm việc đó. Ví dụ 2.25Phân tích10000000000000000001và100000000000000000001

ra thừa số nguyên tố.

[> ifactor(10000000000000000001);

(11)(909090909090909091)

(73)(137)(1676321)(5964848081)

Ví dụ này thú vị ở chỗ nó liên quan tới một câu hỏi được Giáo sư Lại Đức Thịnh nói đến trongTuyển tập 30 năm tạp chí THTT, Nxb Giáo dục, 1997, trang 343: "có bao nhiêu số dạng10...01 với n chữ số0 là số nguyên tố?- hiện nay chưa có câu trả lời". Với Maple, lặp lại lệnh ifactor, mất vài phút ta có thể khẳng định rằng tất cả các số dạng trên với n từ 2 đến

44 đều là hợp số. Như vậy, trong 44 số đầu tiên dạng trên chỉ có duy nhất số 101 là số nguyên tố.

Ví dụ 2.26 Phân tích các số sau ra thừa số nguyên tố

3 (5) (7) (11) (13) (17) (19)−2; 3 (5) (7) (11) (13) (17) (19) (23)−2; 3 (5) (7) (11) (13) (17) (19) (23) (29)−2. Giải [> ifactor(3*5*7*11*13*17*19-2); (4849843) [> ifactor(3*5*7*11*13*17*19*23-2); (111546433) [> ifactor(3*5*7*11*13*17*19*23*29-2); (43)(167)(450473)

Ví dụ này liên quan đến giả thuyết: Hiệu của tích các số nguyên tố liên tiếp và 2. An = p2p3...pn −2, trong đó pk là nguyên tố thứ k (p1 = 2, p2 = 3, p3 = 5, ...), là số nguyên tố với mọi n. Trong Tuyển tập 30 năm tạp chí THTT, NXB Giáo dục, 1997, trang 343, Giáo sư Lại Đức Thịnh viết: " Bằng cách thử, ta thấy rằng các sốA3, A4, A5, A6, A7 đều là số nguyên tố. Có lẽ thử với một vài giá trị nữa của n ta sẽ tìm được một hợp số. Tuy nhiên muốn kiểm tra A8 cần làm 300 phép chia và kiểm tra A9 cần

1300 phép chia, tức là mất vài buổi làm tính". Dùng Maple, như trên ta thấy A8, A9 là số nguyên tố, nhưng A10 là hợp số. Hơn nữa, chỉ cần bỏ ra một vài phút để kiểm tra: trong 21 số đầu thì A3, A4, A5, A6, A7, A8,A9,

A11,A13,A16,A20 là các số nguyên tố, các An còn lại là hợp số. Ví dụ 2.27 Phân tích số 211 −1 và 2521 −1 ra thừa số nguyên tố

[> ifactor(2∧11−1); (23)(89) [> ifactor(2∧521−1); (686479766013060971498190079908139321726943530014330540939 44685543183397656052122559640661454554977296311391480858037 12199716643812574028291115057151)

Các số trên được gọi là số Mersenne, tức là số dạng2p−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, (adsbygoogle = window.adsbygoogle || []).push({});

23 −1, 25 −1, 27 −1, 213 −1, 217−1, 219 −1, 231 −1, 261−1, .... Dùng Maple để thử với p = 521,607,1279,2203,2281 chỉ mất một phút, ta sẽ được các số nguyên tố rất lớn, ví dụ: 22281 −1 là một số nguyên tố với gần 700 chữ số (xem [3]).

Ví dụ 2.28 Phân tích số 2(2n)+ 1 ra thừa số nguyên tố.

[> ifactor 2∧(2∧5) + 1;

(641)(6700417)

Các số dạng 2(2n)+ 1 (số Fecma) có một lịch sử khá thú vị: Fecma khẳng định rằng: 2(2n) + 1 đều là số nguyên tố với mọi n. Điều này đúng với

n= 0,1,2,3,4. Tuy nhiên, năm 1732 Euler chỉ ra với n = 5 thì số Fecma là hợp số (như ta thấy ở trên). Ta còn thấy ngay là với n = 6thì số Fecma cũng là hợp số.

[> ifactor2∧(2∧6) + 1;

(67280421310721)(274177)

Số nguyên tố Fecma quan trọng vì nó liên quan đến bài toán dựng đa giác đều nội tiếp đường tròn: Gauss đã chứng minh rằng một đa giác đều m

cạnh nội tiếp đường tròn với m là số nguyên tố Fecma có thể dựng được bằng thước và compa khi m là số Fecma. Khi chết, Gauss đã đề nghị khắc trên mộ ông đa giác đều 17 cạnh dựng được bằng thước và compa. Hiện nay, số Fecmat vẫn đang được nghiên cứu.

Ví dụ 2.29 Kiểm tra khẳng định của Euler: n2 +n+ 41 nhận các giá trị nguyên tố khác nhau với n = 0,1,2, ...39 và là hợp số khi n = 40.

Trước tiên ta định nghĩa hàm f bằng lệnh := như sau

[> f:=n → 2∧2 +n+ 41;

f := n→ n2 +n+ 41

Bây giờ ta có thể phân tích f(n) ra thừa số với mọi giá trị của n,

[> ifactor(f(39)); (1601) [> ifactor(f(40)); (41)2 [> ifactor(f(41)); (41)(43)

Bằng một lệnh ifactor(f(n)) như trên ta có thể thấy: khi nthay đổi từ 0 đến 100 thì chỉ có 14 hợp số là f(40), f(41), f(44), f(49), f(56), f(65), f(76), f(81), f(82), f(84), f(87), f(89), f(91), f(96), các f(n) còn lại đều là số nguyên tố. Thật là một đa thức hiếm! Một "của hiếm" nữa là: đa

thức x2 −79x+ 1601 nhận các giá trị nguyên tố (không phải tất cả khác nhau) với x = 0,1...79 và là hợp số khi n = 80.

Một số ví dụ áp dụng

Bài 1 (Vô địch Bungari, 1986)

Tìm giá trị bé nhất của n sao cho n2−n+ 1 phân tích thành 4 số nguyên tố (không nhất thiết khác nhau).

Bài 2 (Đề thi Giải toán trên máy tính, Trung học Cơ sở, Sở Giáo dục và Đào tạo Sóc Trăng, 2003-2004)

Phân tích các số 20387 và 139231 ra thừa số nguyên tố.

Bài 3 (Thi học sinh giỏi Giải toán trên máy tính, Sở Giáo dục và Đào tạo Thừa Thiên-Huế, Trung học cơ sở, 2005-2006)

Phân tích các số 252633033 và 8863701824 ra thừa số nguyên tố.

Bài 4 (Đề thi Giải toán trên máy tính, Trung học Cơ sở, Sở Giáo dục và Đào tạo Hòa Bình, 2007-2008)

Phân tích các số 8563513664 và 244290303 ra thừa số nguyên tố.

Bài 5 (Đề thi Giải toán trên máy tính, Trung học Cơ sở, Sở Giáo dục và Đào tạo Ninh Bình, 2013-2014)

(adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Các thuật toán cơ bản trong lý thuyết số (Trang 55 - 64)