intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Phân tích các số nguyên có dạng 2 n -1 ra thừa số nguyên tố

Chia sẻ: Cung Ru | Ngày: | Loại File: PPT | Số trang:23

140
lượt xem
14
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Nhiệm vụ chính của đề án là giải quyết bài toán: “Phân tích các số nguyên có dạng 2n-1 ra thừa số nguyên tố (với n ≤ 200)”. Chương 1 sẽ trình bầy về các số Mersenne. Chương 2 đề cập đến bài toán phân tích số nguyên ra thừa số nguyên tố. Chương 3 là phần cơ bản của đề án, trong đó trình bày các tư tưởng của thuật toán phân tích ra thừa số nguyên tố của những số nguyên lớn.

Chủ đề:
Lưu

Nội dung Text: Phân tích các số nguyên có dạng 2 n -1 ra thừa số nguyên tố

  1. PHÂN TÍCH CÁC SỐ NGUYÊN CÓ DẠNG 2 n-1 RA THỪA SỐ NGUYÊN TỐ
  2. ĐẶT VẤN ĐỀ • Bài toán phân tích số nguyên ra thừa số nguyên tố đã được ra đời từ rất lâu và đã cuốn hút nhiều bộ óc vĩ đại nhất trên thế giới để giải quyết vấn đề về nó. • Ngoài ý nghĩa lý thuyết của bản thân bài toán người ta còn phát hiện nhiều ý nghĩa thực tiễn đặc biệt là trong mật mã.
  3. ĐẶT VẤN ĐỀ • Nhiệm vụ chính của đề án là giải quyết bài toán: “Phân tích các số nguyên có dạng 2 n-1 ra thừa số nguyên tố (với n ≤ 200)”. • Chương 1 sẽ trình bầy về các số Mersenne. Chương 2 đề cập đến bài toán phân tích số nguyên ra thừa số nguyên tố. Chương 3 là phần cơ bản của đề án, trong đó trình bày các tư tưởng của thuật toán phân tích ra thừa số nguyên tố của những số nguyên lớn.
  4. CHƯƠNG I. CÁC SỐ MERSENNE VÀ VIỆC PHÂN TÍCH • Các số có dạng Mq=2q-1 (với q là nguyên tố ) được gọi là các số Mersenne. • Nếu q là một số nguyên tố đồng dư modulo 4(q≡ 3(mod 4)) thì Mq chia hết cho 2q+1 khi và chỉ khi 2q+1 là nguyên tố; trong trường hợp này, nếu q>3 thì Mq là hợp số. • Nếu Mq chia hết cho n thì n ≡ ± 1 (mod 8) và n ≡ 1 (mod q)
  5. Phép thử nguyên tố cho các số Mersenne • Mn=2n-1 là nguyên tố khi và chỉ khi Mn là ước của Sn-2. trong đó, dẫy (Sk)k>=1 được định nghĩa như sau: S0=4; Sk+1=Sk2-2
  6. CHƯƠNG II. MỘT SỐ PHƯƠNG PHÁP PHÂN TÍCH SỐ • Thuật toán sàng Eratosthenes • Phương pháp p-1: Thuật toán Pollard thứ nhất • Phương pháp ρ: Thuật toán Pollard thứ hai
  7. Thuật toán sàng Eratosthenes (1) p = 1. (2) p = p+1. (3) Tính r = N mod p — Nếu r > 0 quay về (2). — Ngược lại p là ước của N. Dừng chương trình.
  8. Phương pháp p-1: Thuật toán Pollard thứ nhất N N log q (1) Q= 2 ... qk log 2 k , i=1,j=0. (2) Lấy a ngẫu nhiên trong Z*N, tính b≡ aQ mod N. (3) Xét đẳng thức b=1. Nếu đúng chuyển sang (4). Ngược lại chuyển sang (6). (4) Xét j
  9. Phương pháp ρ: Thuật toán Pollard thứ hai (1) i=0 (2) i=i+1 (3) Xét gcd((x2i- xi)mod N,N)>1 - Nếu đúng, ta có gcd((x2i- xi)mod N,N). Dừng chương trình. - Ngược lại quay về (2).
  10. CHƯƠNG III. XÂY DỰNG PHẦN MỀM PHÂN TÍCH CÁC SỐ 2 n-1 • Sơ đồ xuất phát • Phân tích hệ thống • Cài đặt chương trình • Sơ đồ khối của các modules trong chương trình
  11. Sơ đồ xuất phát Begin Nhập N (hợp số) Q=2 a=Random(N) a≡ aQ mod N Q=Q+1 T F d=gcd(a-1, N)>1 Q
  12. Phân tích hệ thống • Khai báo số lớn Cho q>0 khi đó ∀N, tồn tại duy nhất một bộ n0, n1,...,nk, với 0≤ ni
  13. Phép cộng số lớn Cho 2 số lớn X và Y: X=(x0, x1, ..., xn) Y=(y0, y1,..., yn), thì Z=X+Y= = ( (x0+y0) mod q , (x1+y1+nho0) mod q,..., (xn+yn+nhon-1) mod q ) trong đó nhoi=(xi+yi+nhoi-1)/q.
  14. Phép nhân số lớn Cho các số lớn X và Y. Tích Z của hai số này được định nghĩa như sau:
  15. Phép chia số lớn • Định lý: Cho X
  16. Phép luỹ thừa Tư tưởng cơ bản của phép luỹ thừa aB mod N là Nếu B=b0+b12+b222+...+br2r thì 2 b0 +b1 2+b2 2 + ...+br 2 r r a =a B = a .(a ) ...(a ) b0 2 b1 2 br
  17. Cài đặt chương trình • Mô tả quá trình thực hiện • Sơ đồ tính toán
  18. Mô tả quá trình thực hiện (0) Xây dựng một chương trình tìm và ghi lên một tệp các số nguyên tố nhỏ hơn 216. (1) Tìm các ước nguyên tố nhỏ của M − Cho i và tính M=2i-1 bằng hàm Mersenne_SL(); in M − Phân tích M bằng hàm Phân_tich_Word (a) đọc một số nguyên tố a từ tệp các số nguyên tố nhỏ (b) Nếu M không chia hết cho a thì quay lên bước a) để đọc số tiếp theo. Thực hiện phép chia M cho a bằng hàm Chia_Word()
  19. - Nếu M chia hết cho a thì làm lại bước này đối với thương của phép chia M cho a. - Nếu đến một lúc nào đó ta thu được một thương bằng một số nguyên tố trong tệp hoặc chia hết cho một số trong tệp thì dừng chương trình và kết luận đã phân tích hoàn toàn và tích của các thừa số nguyên tố là ước của M chính là bằng M. - Nếu đọc hết tệp mà thương cuối cùng không trùng với bất kỳ số nào trong tệp hoặc không chia hết cho bất cứ số nào trong tệp nào thì phải phân tích xem thương này có phải là số nguyên tố không bằng cách dùng hàm nguyên_to_SL. Nếu xác định thương này là nguyên tố thì dừng chương trình và kết luận là “ phân tích hoàn toàn”. Ngược lại thì chuyển sang giai đoạn (2).
  20. (2) Dùng thuật toán Pollard_1 để phân tích ước hợp số Z của M - Lấy ngẫu nhiên một số lớn a=Random_SL(Z); khởi đầu lấy Q=2; - Dùng hàm UCLN_SL để tìm ước chung lớn nhất của Z và aQ-1. Nếu UCLN này lớn hơn 1 thì đây sẽ là một ước của Z và in ra “đã tìm được ước”. Ngược lại thì tăng Q lên 1 và làm lại bước này cho đến khi tìm được một ước hoặc khi Q vượt qua một số Q0 đủ lớn nào đó thì dừng (thông thường, chọn Q0=65536). Trong trường hợp này ta nói rằng “không phân tích hoàn toàn” .
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2