You are on page 1of 11

Ti liu cho i tuyn tin PTNK

19/06/2007

S hc - thut ton
L thuyt s, hay s hc l lnh vc nghin cu v cc s nguyn. Trong ti liu ny,
chng ta s cp n mt s kin thc v cc thut ton v s hc thng gp, bao gm
t nhng vn c bn.

1. S nguyn t
1.1. Nu p l c nguyn t b nht ca n, th p2 n
(n=pq, m p q, do p2 pq = n)
1.2. Thut ton kim tra tnh nguyn t
T 1.1. ta c thut ton kim tra tnh nguyn t ca mt s n, chy trong thi gian
O(n1/2):
function isprime(n): boolean;
begin
isprime:=false;
if (n<=2) then exit;
i:=2;
while (i*i<=n) do
begin
if n mod i = 0 then
exit;
inc(i);
end;
isprime:=true;
end;
1.3. Phn tch ra tha s nguyn t
Cng t 1.1., ta c thut ton phn tch mt s n ra tha s nguyn t:
procedure factor(n);
begin
i:=2;
while (i*i<=n) do
begin
if (n mod i = 0) then
begin
a:=0;
while (n mod i = 0) do
begin
n:=n div i;
inc(a);
end;
Version 1.0.0

Ti liu cho i tuyn tin PTNK

19/06/2007

inc(m);
prime[m]:=i;
power[m]:=a;
end;

end;

end;
if (n>1) then
begin
inc(m);
prime[m]:=n;
power[m]:=1;
end;

Thng tin c tr v trong mng prime v power: prime[i], power[i] tng ng cho bit
tha s v s m th i trong php phn tch n ra tha s nguyn t.
Lu nhng dng mu : sau khi thc hin cc php chia, n c th cn l mt tha s
nguyn t c lp.
y l phng php phn tch n gin nht, c gi l php th chia. Trong trng
hp xu nht, n l s nguyn t, thut ton chy trong thi gian O(n1/2)
1.4. Sng s nguyn t
Khi cn bit cc s nguyn t n mt phm vi no , v d t 2 n 108, s dng sng
s nguyn t Eratosthenes s hiu qa hn v thi gian.
Th tc sau to sng s nguyn t t 2 n N:
procedure sieve(n);
begin
fillchar(p, sizeof(p), true);
for i:=2 to n do
if (p[i]) then
begin
j:=i+i;
while (j<=n) do
begin
p[j]:=false;
j:=j+i;
end;
end;
end;
Thng tin tr v trong mng p: p[i] = true nu v ch nu i l s nguyn t.
Bn c th c lng thi gian chy ca thut ton sng Eratosthenes l O(nlogn), ta s
cp n mt s c lng cn thit nhng phn sau.

Version 1.0.0

Ti liu cho i tuyn tin PTNK

19/06/2007

1.5. c lng s s nguyn t


K hiu (n) l s s nguyn t b hn n. y l mt c lng tng i tt v ngn gn
cho (n):
(n) n / ln(n)
V d, (106) 106 / ln(106) 72382
Con s ny s gip cho vic c lng thi gian tnh ton cho cc bi ton lin quan n
s nguyn t
1.6. Bi tp
Cho mt dy s nguyn dng n phn t: a1, a2, ..., an
Dy con ca dy s l dy nhn c sau khi xa i mt s phn t no
Yu cu: Tm dy con di nht, sao cho tng ca hai s lin tip l s nguyn t
Input:
NT1.IN
Dng 1: n
Dng 2: n s nguyn dng, a1, a2, ..., an
Output:
NT1.OUT
Dng 1: di ca dy con tm c
Gii hn:
n <= 104
ai <= 104

2. USCLN, thut ton Euclid


2.1. (a, b) = (b, a mod b)
Tht vy, t ng thc
a = bq + r.
vi r = a mod b
Ta thy mi c chung d ca a, b cng l c chung ca b, r. Do (a, b) = (b, r).
2.2. Thut ton tm USCLN
T 2.1, ta c thut ton Euclid tm USCLN ca a v b, vit di dng quy:
function gcd(a, b);
begin
if (a<b) then
gcd:=gcd(b, a)
else if (b=0) then

Version 1.0.0

Ti liu cho i tuyn tin PTNK

19/06/2007

gcd:=a
else

gcd:=gcd(b,

a mod b);

end;
Vi a, b n, bn c th c lng thi gian thc hin thut ton vo khong O(log10n),
tc l t l vi s ch s ca n.
2.3.
Nu (a, b)=d, th tn ti hai s nguyn x, y sao cho
ax + by = d
2.4. Thut ton Euclid m rng
Thut ton Euclid m rng s tm USCLN d ca a v b, ng thi tm c c hai s
nguyn x, y trong phn 2.3
Thut ton Euclid m rng c th din t bng quy nh sau:
procedure ee(a, b, var x, var y);
var
x2,y2;
begin
if (a<b) then
ee(b, a, x, y)
else if (b=0) then
begin
x:=1;
y:=0;
end else
begin
ee(b, a mod b, x2, y2);
x:=y2;
y:=x2-(a div b)*y2;
end;
end;
Gii thch:
T 2.1, ta bit (a, b) = (b, r) = d
ee(a, b, var x, var y) tr v gi tr x, y sao cho ax + by = d
Dng lnh mu chy th tc quy: tm x2, y2 sao cho:
bx2 + ry2 = d
Mt khc:
r = a bq
Vi
r=a mod b
q=a div b
Do
Version 1.0.0

Ti liu cho i tuyn tin PTNK

19/06/2007
bx2 + (a-bq)y2 = d
ay2 + b(x2 qy2) = d

Vy

x = y2
y = x2 qy2
Cu trc quy ca thut ton Euclid m rng cng tng t nh thut ton Euclid.
2.5. Mt s tnh cht
Gi s
nh ngha:

a = p1a1p2a2...pkak
b = p1b1p2b2...pkbk
USCLN: (a, b) = p1min(a1, b1)p2min(a2, b2)...pkmin(ak, bk)
BSCNN: [a, b] = p1max(a1, b1)p2max(a2, b2)...pkmax(ak, bk)

Tnh cht:
(a, b) x [a, b] = ab
(a, b, c) = ((a, b), c) = (a, (b, c))
[a, b, c] = [[a, b], c] = [a, [b, c]]
Ch :
Khng c ng thc (a, b, c) [a, b, c] = abc
2.6. Bi tp
Cho dy s nguyn dng n phn t a1, a2, ..., an.
Yu cu:
Tm dy con lin tip di nht c USCLN > 1
Input:
NT2.INP
Dng 1: n
Dng 2: n s nguyn dng, a1, a2, ..., an
Output:
NT2.OUT
Dng 1: di ca dy con tm c
Gii hn:
n<=30000
0 < ai <= 32767

3. PT, HPT ng d
3.1. Nghch o

Version 1.0.0

Ti liu cho i tuyn tin PTNK

19/06/2007

Tr li vi thut ton Eulcid m rng:


Gi s ta thc hin ee(a, m, var x, var y)
Trong trng hp (a, m) = 1, ta thu c gi tr x, y sao cho:
ax + my = 1
Hay
ax 1 (mod m)
(a, m) = 1 x, ax 1 (mod m)
x c gi l nghch o ca a theo modulo m, k hiu a-1
tm x, ta s dng thut ton Euclid m rng
3.2. Phng trnh ng d bc nht
ax b (mod m)

(3.2)

3.2.1. Trng hp (a, m) = 1


Theo 3.1. a-1, aa-1 1 (mod m)
Do aa-1b b (mod m)
t x = (a-1b) th x l mt nghim ca (3.2)
Gi s tn ti x, sao cho
ax b (mod m)
Suy ra ax ax (mod m), m (a, m)=1
Suy ra x x (mod m)
Vy x = (a-1b) l nghim duy nht ca (3.2) theo modulo m
3.2.2. Trng hp (a, m) = d
Nu d khng l c ca b, hin nhin (3.2) v nghim
Nu b | d, xt phng trnh:
(a/d) y (b/d) (mod (m/d))
Ta c (a/d, m/d) = 1, do theo 3.2.1.
y (a/d)-1 (b/d) ( mod (m/d))
t
y0 = (a/d)-1 (b/d)
(3.2) c d nghim:
xt = y0 + t(m/d)
vi t = 0, 1, ..., d-1
theo modulo m
3.3. nh l phn d Trung Hoa
Nu
x a1 (mod m1)
x a2 (mod m2)
...
x an (mod mn)

Version 1.0.0

Ti liu cho i tuyn tin PTNK

19/06/2007

v m1, m2, ..., mn i mt nguyn t cng nhau th x c xc nh duy nht theo modulo
M = m1m2...mn:
x a1b1c1 + a2b2c2 + ... + anbncn (mod M)
(3.3)
Trong
ci = M / a i
bi = ci-1 (mod ai)
Phng php tm cng thc (3.3):
Xt trng hp a2 = a3 = .... = an = 0
Cn tm x1:
x1 a1 (mod m1)
x1 0 (mod m2)
...
x1 0 (mod mn)
Ta s tm c
x1 a1b1c1 (mod M)
Tng t, li xt trng hp a1 = a3 = ... = an = 0
x2 a2b2c2 (mod M)
...
xn anbncn (mod M)
T hp cc kt qa li ta thu c cng thc (3.3), phng php ny c gi l phng
php chng.
4. Php chia ht
4.1.
S cc s nguyn dng khng vt qa n chia ht cho d:
n
d
hay
n div d
4.2. c s
Gi s
4.2.1. S c

4.2.2. Tch cc c

n = p1a1p2a2...pkak

(n) = (a1 + 1)(a2 + 1)...(a k + 1)

d = n

Tht vy, vit n di dng tch hai tha s:

Version 1.0.0

(n) / 2

Ti liu cho i tuyn tin PTNK

19/06/2007

d1d '1
d d '

n= 2 2
...
d d '
Do

n ( n ) = ( d )2

hay

d = n

(n) / 2

4.2.3. Tng cc c

( n) =
i

Tht vy: nu (a, b) = 1 ta cm c


Do

pi ai +1 1
(4.2.3)
pi 1

( ab) = ( a ) (b)

(n) = ( pi a )
i

( pi ) = 1 + pi + pi + ... + pi
ai

ai

pi ai +1 1
=
pi 1

T thu c cng thc (4.2.3)


5. S Fibonacci
5.1. Cch tnh nhanh Fn
Vit di dng tch hai ma trn:

0 1
1 1

Fn 1

Fn

Fn
Fn +1

t
A=
v=

1
1

0 1
1 1

F1
F2

Ta c cng thc:

An 1v =

Version 1.0.0

Fn
Fn +1

(5.1)

Ti liu cho i tuyn tin PTNK

19/06/2007

M An-1 c th tnh trong thi gian O(logn), do cng thc (5.1.) cho php ta tnh Fn
trong thi gian O(logn)
5.2. Mt s kt qa th v
5.2.1. UCLN ca Fm, Fn
Cng thc Lucas:
(Fm, Fn) = F(m, n)
5.2.2. Xc nh mt s c phi l s Fibonacci
Gessel (1972):
n l s Fibonacci nu v ch nu 5n2 + 4 hoc 5n2 4 l s chnh phng
5.3. Biu din Zeckendorf
5.3.1. nh l Zeckendorf:
Mi s nguyn dng u c biu din duy nht di dng tng cc s Fibonacci,
trong khng c hai s Fibonacci lin tip, ngha l di dng:
n = a k Fk
k

vi
v

ak = 0 hoc ak = 1
akak+1 = 0

5.3.2. V d:
100 = 89 + 8 + 3
5.3.3. Thut ton
Tm biu din Zeckendorf, hay cn gi l biu din di dng c s Fibonacci ca n:
while (n>0) do
begin
f l s fibonnaci ln nht khng vt qa n;
chn f vo biu din;
n:=nf;
end;

hay ta c th ci t nh sau:
for i:=max downto 1 do
while (Fi <= n) do
begin
chn Fi;
n:=n-Fi;
end;

vi max l ch s ln nht ca s Fibonacci trong gii hn lm vic


Tnh ng n:

Version 1.0.0

Ti liu cho i tuyn tin PTNK

19/06/2007

Thut ton tham 5.3.3. s khng bao gi chn hai s Fibonacci lin tip, tht vy, gi s
thut ton chn Fn-1, Fn-2 vo tng, th do ta i qua danh sch s Fibonacci theo th t
gim dn, thut ton t chn Fn = Fn-1 + Fn-2 thay v Fn-1, Fn-2
5.4. Bi tp:
5.4.1. http://acm.uva.es/p/v9/948.html
6. Tham kho
Trn y ch l mt s vn v s hc - thut ton thi, cc bn nn tm hiu thm, t
bt k ngun no, internet, sch v. Nu c nhng vn , nhng bi tp hay, hy ng
gp li cho mi ngi!
Mt s ngun cc bn tham kho thm:
Concerte Mathematics A Foundation for Computer Science
Mathworld
Wikipedia

Thut ng, ghi ch


1.
S nguyn t
Kim tra tnh nguyn t
Phn tch ra tha s nguyn t
Sng

PRIME
PRIMALITY TEST
PRIME FACTORIZATION
SIEVE

C rt nhiu thut ton kim tra & phn tch ra tha s nguyn t hiu qa hn, tuy nhin
nhng g chng ta trnh by l nhng thut ton n gin nht, s s dng trong cc bi
tp v k thi.
1.5. Xem PRIME NUMBER THEOREM
2.
USCLN
Thut ton Euclid
Thut ton Euclid m rng
BSCNN

Greatest Common Divisor (GCD)


Euclidean Algorithm
Extended Euclidean Algorithm
Least Common Multiple (LCM)

2.1. V thi gian chy ca thut ton Euclid, xem thm LAMS THEOREM
2.3. Xem thm BZOUTS LEMMA
3.
Phng trnh ng d
nh l phn d Trung Hoa

Congruence Equation
Chinese Remainder Theorem

Biu din Zeckendorf

Zeckendorf Representation

5.

Version 1.0.0

Ti liu cho i tuyn tin PTNK

Version 1.0.0

19/06/2007

You might also like