220 likes | 472 Views
Application: Algorithms. Lecture 20 Section 3.8 Wed, Feb 21, 2007. Greatest Common Divisors. Let a and b be integers that are not both 0. The greatest common divisor of a and b , denoted gcd( a , b ), is the unique positive integer d with the following properties:
E N D
Application: Algorithms Lecture 20 Section 3.8 Wed, Feb 21, 2007
Greatest Common Divisors • Let a and b be integers that are not both 0. • The greatest common divisor of a and b, denoted gcd(a, b), is the unique positive integer d with the following properties: • d | a and d | b. • For every integer c, if c | a and c | b, then c | d.
Least Common Multiples • Let a and b be nonzero integers. • The least common multiple of a and b, denoted lcm(a, b), is the unique positive integer m with the following properties: • a | m and b | m. • For every integer c, if a | c and b | c, then m | c.
The High-school gcd Algorithm • The high-school method is very inefficient. • Factor each number into standard form. • For each prime that appears in both factorizations, use it as a factor of the gcd along with the smaller of the two exponents.
Example • Find the gcd of 81900 and 54810. • We factor them as • 81900 = 22 32 52 71 131 290 • 54810 = 21 33 51 71 130 291 • Therefore, the gcd is • 2 32 5 7 = 630
The Euclidean Algorithm • Factoring is inefficient; therefore, this algorithm is inefficient. • The run time of this algorithm is O(10d), where d is the number of digits in the number. • Euclid had a much better idea. • The run time of the Euclidean Algorithm is O(d), where d is the number of digits in the number.
The Euclidean Algorithm • Input: A, B (positive integers, not both 0)
The Euclidean Algorithm • Algorithm body: • Output: b a := A b := B ifb = 0 then swap a and b r := a mod b whiler > 0 a := b b := r r := a mod b end while
Example • Apply the Euclidean Algorithm to A = 81900 and B = 54810.
Example • Apply the Euclidean Algorithm to A = 81900 and B = 54810.
Example • Apply the Euclidean Algorithm to A = 81900 and B = 54810.
Example • Find the gcd of 1098011 and 1033133.
Least Common Multiples • What is the efficient way to find lcm’s? • What is the lcm of 1098011 and 1033133?
Proof of the Euclidean Algorithm • Theorem: The Euclidean Algorithm terminates for all legitimate inputs A and B. • Proof: • We may assume that B > 0. • After the first iteration of the while loop, 0 b < B since b is the remainder of A divided by B.
Proof of the Euclidean Algorithm • Each iteration produces a nonnegative remainder that is smaller than the previous remainder. • This cannot happen more than B times before the remainder is 0.
Proof of the Euclidean Algorithm • Lemma 1: If b > 0, then gcd(b, 0) = b. • Proof: • b | b and b | 0. • For all integers c, if c | 0 and c | b, then c | b. • Therefore, b = gcd(b, 0).
Proof of the Euclidean Algorithm • Lemma 2: If a and b are integers, with b 0, and q and r are integers such that a = qb + r then gcd(a, b) = gcd(b, r). • Proof: • Let d = gcd(b, r). • Then d | b and d | r and any integer that divides b and r must also divide d.
Proof of the Euclidean Algorithm • We must show that d | a and d | b and any integer that divides a and b must also divide d. • We already know that d | b. • Since a = qb + r, it follows that d | a. • Let c be an integer such that c | a and c | b. • Since r = a – qb, it follows that c | r and so c | d. • Therefore, d = gcd(a, b).
Proof of the Euclidean Algorithm • Theorem: The Euclidean Algorithm produces the gcd of A and B. • Proof: • After the final iteration of the while loop, r = 0. • By Lemma 1, the output b is the gcd of b and r, i.e., b = gcd(b, 0). • By Lemma 2, that is equal to the gcd of “a” and “b”in the final iteration.
Proof of the Euclidean Algorithm • But “a” and “b” on the last iteration were “b” and “r” on the previous iteration. • Therefore, gcd(a, b) on the last iteration equals gcd(b, r) on the previous iteration, which equals gcd(a, b) on the previous iteration, and so on. • Following this argument all the back to the first iteration, we see that the output is gcd(A, B).
Proof of the Euclidean Algorithm • In the next chapter, we will study mathematical induction. • At that point, we will be able to make this argument more rigorous.