Thuật Toán Bình Phương Và Nhân

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

Thut ton bnh phng v nhn

Bch khoa ton th m Wikipedia

Thut ton bnh phng v nhn l thut ton tnh nhanh ly tha t nhin ca mt s
(thc hoc nguyn), trong trng hp c s l s nguyn c th c rt gn theo mt mun no .
Php nng ln ly tha t nhin bc n ca s x (x c gi l c s) c nh ngha t h thc

Vi n ln s php nhn l rt ln.


Mc lc
[n]

1 V d

2 Cng thc quy

3 Gii thut quy

4 Gii thut khng quy

4.1 Gii thut

4.2 V d

5 Xem thm

V d
Chng hn vi n=35 qu trnh tnh

qua 35

bc:
Ta nhn xt rng c th gim bt s php nhn chng hn vi dy php tnh
,

,
,

Cng thc quy


Qu trnh tnh ton trn chnh l qu trnh tnh nh cng thc quy
1. Vi n=0 th
2. Vi n>0 ta c cng thc

Nh vy php tnh

c quy v mt s php bnh phng v php nhn do vy m c tn gi thut

ton bnh phng v nhn.

Gii thut quy


Gii thut sau tnh quy

Function Square_Multi (int x, n, m){


Var Int Power
If n=0 then return 1
Else {
n:=LShift(n,1)
Power := Square_Multi (int x, n, m)
Power:=(Power^2) mod m
If n BitAnd 1 =0 then
Return Power
Else
Return (Power*x) mod m
}
}

on code vit bng java:

public static int binhphuong (int x,int n,int m)


{
int p;
if (n==0) then return 1;
p=binhphuong(x,n/2,m);
if (n%2==0)
return (p*p)%m;
else
return (p*p*x)%m;
}

Ch rng mt s t nhin l chn hay l ch ph thuc vo bt s 0 ca n nn trong gii thut trn ta s


dng ton t AndBit xc nh tnh chn l ca n v s dng php LShif tnh phn nguyn ca n/2.

Gii thut khng quy


Trong gii thut quy trn y ta xt tnh chn l ca n v lin tc chia n cho 2 ly phn nguyn cho n
khi n=0. Thc cht qu trnh ny chnh l tm cc bt ca n. Do ta c th thc hin php i ra s nh
phn trc sau tnh ly tha theo quy tc bnh phng v nhn.

Gii thut

i n ra s nh phn ghi vo mng

Function Power_Modulo(Int x,n,m){


Var Int Power:=1
For i=1 to k do {
Power:=(Power^2) mod m
If b[i]=1 then
Power:=(Power*x) mod m
Return Power
}

V d
Trong v d sau ta tnh
i

ra s nh phn ta c

Bng sau y tnh ton tng bc theo gi tr ca cc bt ca


Khi to

Nh vy ta c

You might also like