Top Banner
Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson
27

Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Dec 14, 2015

Download

Documents

Seth Craner
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Euclidean Algorithm

Applied Symbolic ComputationCS 567

Jeremy Johnson

Page 2: 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

Page 3: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Unique Factorization

• p|ab p|a or p|b

• a = p1 pt = q1 qs s = t and i j: pi= qj

• a = p1e1 pt

et

• b = p1f1 pt

ft

• gcd(a,b) = p1min(e1,f1) pt

min(et,ft)

Page 4: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Bezout’s Identity

• g = gcd(a,b) • x,y: g = ax + by

Page 5: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Bezout’s Identity

• g = gcd(a,b) • x,y: g = ax + by

Page 6: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Euclidean Algorithm

g = gcd(a,b) if (b = 0) then return a; else return gcd(b,a mod b)

Page 7: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Correctness

Page 8: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Tail Recursion

g = gcd(a,b) if (b = 0) then return a; else return gcd(b,a mod b)

Page 9: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Iterative Algorithm

g = gcd(a,b) a1 = a; a2 = b; while (a2 0) a3 = a1 mod a2; a1 = a2; a2 = a3; } return a1;

Page 10: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

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

Page 11: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

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).

Page 12: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Bounding Number of Divisions

Page 13: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Fibonacci Numbers

• F0 = 0, F1 = 1

• Fn+2 = Fn+1 + Fn

Page 14: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Solving the Fibonacci Recurrence

• Fn = 1/5(n + * n),

= (1 + 5)/2, * = (1 - 5)/2• Fn 1/5n+1

Page 15: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Solving the Fibonacci Recurrence

Page 16: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Solving the Fibonacci Recurrence

Page 17: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Maximum Number of Divisions

Theorem. The smallest pair of integers that require n divisions to compute their gcd is Fn+2 and Fn+1.

Page 18: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

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).

Page 19: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Maximum Number of Divisions

Page 20: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

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;

Page 21: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Correctness

Page 22: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Correctness

Page 23: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Probability of Relative Primality

p/d2 = 1 p = 1/(2)

(z) = 1/nz

(2) = 2/6

Page 24: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Formal Proof

Let qn be the number of 1 a,b n such that gcd(a,b) = 1. Then limn qn/n2 = 6/2

Page 25: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Mobius Function

• (1) = 1• (p1 pt) = -1t

• (n) = 0 if p2|n

(ab) = (a)(b) if gcd(a,b) = 1.

Page 26: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Mobius Inversion

d|n (d) = 0

(n (n)ns)(n 1/ns) = 1

Page 27: Euclidean Algorithm Applied Symbolic Computation CS 567 Jeremy Johnson.

Formal Proof

qn = n n/k2

limn qn/n2 = n (n)n2 = n 1/n2 = 6/2