Kiểm tra số giả nguyên tố Fermat mạnh

Một phần của tài liệu Về một số loại số giả nguyên tố (Trang 50)

12 11 k k k n

2.4.6.Kiểm tra số giả nguyên tố Fermat mạnh

Bước 1: Phân tích số n ra thừa số nguyên tố .

[> ifactor(n -1);

Bước 2: Từ kết quả phân tích trên chúng ta biết rằng n - 1 có thể viết dưới dạng n - 1 = 2st (s là số tự nhiên bất kỳ, t là một số lẻ). Ta kiểm tra điều kiện:

[>is(b&^t mod n= 1) ;

Nếu điều kiện trên nghiệm đúng (lệnh cho giá trị true ) thì n là số giả nguyên tố mạnh cơ sở b, ngược lại ta kiểm tra điều kiện sau :

[> is(b&^t-1 mod n = 0) ;

Nếu lệnh cho giá trị true thì n là số giả nguyên tố mạnh cơ sở b .

Nếu kết quả là false ta tiếp tục kiểm tra điều kiện b2jt + =1 0(mod )n

có được thoả mãn với một j nào đó trong khoảng từ 0 đến s - 1 hay không. Nếu có một j như vậy thì kết luận n là số giả nguyên tố mạnh cơ sở b, ngược lại ta kết luận không phải. Có thể thực hiện điều này bằng lệnh sau đây :

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

Kết quả của lệnh là một dãy bao gồm s số tự nhiên, nếu có một số trong dãy đó bằng 0 thì kết luận n là số giả nguyên tố mạnh cơ sở b, ngược lại là không phải.

Ví dụ. Kiểm tra số 25326001 có phải là số nguyên tố Fermat mạnh cơ sở 2 [> n:=25326001; b:=2; n:=25326001 b:=2 [> isprime(n); false [> factor(n-1); ( ) ( ) ( ) ( ) ( )4 3 3 2 3 5 7 67 Ta có, [> s:=4; t:=3^3*5^3*7*67; s:=4 t:=1582875

[> is(b&^t mod n = 1);

false

Ta kiểm tra tiếp

[> is(b&^t-1 mod n = 0);

false

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

0, 2, 2, 2

Như vậy số 25326001 là số giả nguyên tố mạnh cơ sở 2. Với b = 3; 5 ta cũng có kết quả tương tự . Nhưng với b = 7 ta có :

[> n:=25326001; b:=7; n:=25326001 b:=7 [> s:=4; t:=3^3*5^3*7*67; s:=4 t:=1582875 [> is(b&^t mod n = 1); false [> is(b&^t-1 mod n = 0); false

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

19453142, 16857741, 11448588, 10127251

Vậy, số 25326001 là số giả nguyên tố Fermat mạnh cơ sở 2, 3, 5 nhưng không là số giả nguyên tố Fermat mạnh cơ sở 7.

Một phần của tài liệu Về một số loại số giả nguyên tố (Trang 50)