Phân tích một số “rất lớn” ra thừa số nguyên tố.

Từ một câu hỏi của học sinh. Ai có thể chỉ em cách bấm máy tính phân tích số ra thừa số nguyên tố đối với số nhiều chữ số được không ạ. Vd: 7986636071569. Em cảm ơn nhiều ạ.

 

Một số “rất lớn” như số có 13 chữ số $7986636071569$ khi phân tích ra thừa số nguyên tố có hai tình trạng thường gặp.

1. Một thừa số nguyên tố rất nhỏ và một (hay nhiều) thừa số nguyên tố “rất lớn”.

2. Hai thừa số nguyên tố rất lớn, gần nhau (nhưng có thể cách nhau cả ngàn số) và ở giữa, nghĩa là gần $\sqrt{\text{số đó}}$.
 
Tình huống 1. Có một thừa số nguyên tố rất nhỏ (nhỏ hơn 200) có 45 số như vậy, vừa khít một bảng tính. Để làm bài toán này ta dùng thuật toán chia thử (Trial Division) , gán số đã cho vào biến nhớ $A$ leg15avà sử dụng một bảng tính. Cột A nhập các số
 
lẻ từ $3$ đến $91$, cột B điền công thức leg15b, kết quả leg15c. Hiệu bằng $0$, nghĩa là phép chia có thương bằng $0$. Vậy $17$ là một thừa số nguyên tố.
 
Tiếp theo ta thay số $3$ ở $A_1$ thành $93$ (tiếp theo của $91$), bảng tính cập nhật leg15d. Vậy $101$ là thừa số nguyen tố tiếp theo.

Cuối cùng leg15e.
 
Vậy $7986636071569=17\times 101\times 277\times 317\times 52973$
 

Lưu ý: Một trang bảng tính có 45 số lẻ, hai số ở hai biên cách nhau 90 đơn vị nên nhảy từ $101$ đến $277$ và $317$ là không khó khăn gì (dù không cần thiết) leg15y.

 

 
 
Tình huống 2. Hai thừa số nguyên tố rất lớn, gần nhau. Ta chỉ xét những số không quá 10 chữ số, ví dụ $8788763$.
 

Gán số $8788763$ vào biến nhớ A leg16a. Gán hàm số $f(x)=x^2+1-A \text{Int}\dfrac{x^2+1}{A}$ vào
 
biến nhớ $f(x)$ leg16aa.
 
Mở một bảng tính, nhập số $2$ vào $A_1$ và $B_1$ (xuất phát điểm của Rùa và Thỏ) leg16b.
 
Tại $A_2$ điền công thức cho Rùa: leg16c (nhiều hơn $20$ sợ tràn biến nhớ).
 
Tại $B_2$ điền công thức cho Thỏ: leg16d.
 
Tại $C_2$ điền công thức tính ƯCLN của hiệu giữa Rùa và Thỏ với $A$: $\qquad \text{GCD(Abs(}A_2-B_2),A)$.
leg16x 1.
 
Duyệt cột $C$ đến khi thấy một số lớn hơn $1$ và nhỏ hơn $A$ thì đó là thừa số nguyên tố thứ nhất: leg16e.
 
Thừa số nguyên tố thứ hai: leg16y
 

Vậy $8788763=1697\times 5179$.

 
 

Lưu ý: Thuật toán vừa nêu gọi là Thuật Toán Pollard’s Rho , thuật toán này chạy nhanh hơn thuật toán chia thử.
 

Thuật toán Pollard’s Rho được phát minh năm 1975 bởi Pollard.
 
Thuật toán này đến ngày nay vẫn còn được nhiều nghiên cứu viên quan tâm leg16z
 
Bấm vào hình sẽ dẫn tới trang chủ của VIASM.
 

Bổ sung. Thầy Trầm Thanh Phong (Vĩnh Long) cùng xét bài toán phân tích số $798564133$ ra thừa số nguyên tố theo thuật toán Pollard’s Rho với giá trị khởi điểm của Rùa và Thỏ là $2$ thì đến bước thứ 116 mới xuất ra kết quả. Hàm $f(x)$ trong thuật toán được gọi là hàm giả ngẫu nhiên. Thay vì xuất phát điểm là $2$ cho Rùa và Thỏ, Thầy Phong đã cho $a=b=7$. Thông thường xuất phát điểm là $2$, tuy nhiên sau $60$ bước mà không xuất ra thừa số nguyên tố thì có thể thay xuất phát điểm. Với xuất phát điểm mới, đến bước thứ $29$ thì xuất ra thừa số nguyên tố thứ nhất.

 

leg9a 1
 

Vậy $798564133=31081\times 25693$.
 

Cám ơn Thầy Phong đã kiên trì dò tìm xuất phát điểm của Rùa và Thỏ.

Chia sẻ

About TS. Nguyễn Thái Sơn

TS. Nguyễn Thái Sơn
Nguyên trưởng Khoa Toán-Tin học ĐHSP TP HCM (1999-2009). Nguyên Giám đốc- Tổng biên tập NXB ĐHSP TP HCM (2009-2011). Nguyên Tổng thư ký Hội Toán học TP HCM (2008-2013).

Bài Viết Tương Tự

Một bài toán đơn giản mà tính toán phức tạp

Trong tam giác $ABC$ vuông tại $C$ ta dựng các hình vuông $CDEF$ và $KLMN$ …