Download euclid

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Euclidean Algorithm
Applied Symbolic Computation
CS 567
Jeremy Johnson
Greatest Common Divisors
• g = gcd(a,b)
– g|a and g|b
– e|a and e|b  e|g
Unique Factorization
• p|ab  p|a or p|b
• a = p1    pt = q1    qs  s = t and i j: pi= qj
• a = p1e1    ptet
• b = p1f1    ptft
• gcd(a,b) = p1min(e1,f1)    ptmin(et,ft)
Bezout’s Identity
• g = gcd(a,b)
• x,y: g = ax + by
Bezout’s Identity
• g = gcd(a,b)
• x,y: g = ax + by
Euclidean Algorithm
g = gcd(a,b)
if (b = 0) then
return a;
else
return gcd(b,a mod b)
Correctness
Tail Recursion
g = gcd(a,b)
if (b = 0) then
return a;
else
return gcd(b,a mod b)
Iterative Algorithm
g = gcd(a,b)
a1 = a; a2 = b;
while (a2  0)
a3 = a1 mod a2;
a1 = a2; a2 = a3;
}
return a1;
Remainder Sequence
a1 = a, a2 = b
a1 = q3  a2 + a3, 0  a3 < a2

ai = qi  ai+1 + ai+2, 0  ai+2 < ai+1

an= qn  an+1
gcd(a,b) = an+1
Bounding Number of Divisions
Theorem. Let a  b  0 and n = number of
divisions required by the Euclidean algorithm to
compute gcd(a,b). Then n < 2lg(a).
Bounding Number of Divisions
Fibonacci Numbers
• F0 = 0, F1 = 1
• Fn+2 = Fn+1 + Fn
Solving the Fibonacci Recurrence
• Fn = 1/5(n + * n),
 = (1 + 5)/2, * = (1 - 5)/2
• Fn  1/5n+1
Solving the Fibonacci Recurrence
Solving the Fibonacci Recurrence
Maximum Number of Divisions
Theorem. The smallest pair of integers that
require n divisions to compute their gcd is Fn+2
and Fn+1.
Maximum Number of Divisions
Theorem. Let a  b  0 and n = number of
divisions required by the Euclidean algorithm to
compute gcd(a,b). Then n < 1.44 lg(a).
Maximum Number of Divisions
Extended Euclidean Algorithm
g = gcd(a,b,*x,*y)
a1 = a; a2 = b; x1 = 1; x2 = 0; y1 = 0; y2 = 1;
while (a2  0)
a3 = a1 mod a2; q = floor(a1/a2);
x3 = x1 – q*x2; y3 = y1 – q*y2;
a1 = a2; a2 = a3;
x1 = x2; x2 = x3; y1 = y2; y2 = y3;
}
return a1;
Correctness
Correctness
Probability of Relative Primality
p/d2 = 1  p = 1/(2)
(z) = 1/nz
(2) = 2/6
Formal Proof
Let qn be the number of 1 a,b  n such that
gcd(a,b) = 1. Then limn qn/n2 = 6/2
Mobius Function
• (1) = 1
• (p1    pt) = -1t
• (n) = 0 if p2|n
(ab) = (a)(b) if gcd(a,b) = 1.
Mobius Inversion
d|n (d) = 0
(n (n)ns)(n 1/ns) = 1
Formal Proof
qn = n n/k2
limn qn/n2 = n (n)n2 = n 1/n2 = 6/2
Related documents