0% found this document useful (0 votes)
78 views45 pages

Greatest Common Divisor: 3 Gallon Jug 5 Gallon Jug

The document discusses the greatest common divisor (GCD) and several related concepts and algorithms. It begins by defining the GCD as the largest positive integer that divides both numbers. It then introduces the Euclidean algorithm as an efficient way to calculate the GCD by recursively finding the remainder of integer divisions. The document also discusses how the extended Euclidean algorithm can write the GCD as a linear combination of the integers. Finally, it discusses some applications of the GCD and related concepts.

Uploaded by

Marlon Tugwete
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
78 views45 pages

Greatest Common Divisor: 3 Gallon Jug 5 Gallon Jug

The document discusses the greatest common divisor (GCD) and several related concepts and algorithms. It begins by defining the GCD as the largest positive integer that divides both numbers. It then introduces the Euclidean algorithm as an efficient way to calculate the GCD by recursively finding the remainder of integer divisions. The document also discusses how the extended Euclidean algorithm can write the GCD as a linear combination of the integers. Finally, it discusses some applications of the GCD and related concepts.

Uploaded by

Marlon Tugwete
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 45

Greatest Common Divisor

3 Gallon Jug 5 Gallon Jug

Dec 28
This Lecture

• Quotient remainder theorem

• Greatest common divisor & Euclidean algorithm

• Linear combination and GCD, extended Euclidean algorithm

• Prime factorization and other applications


The Quotient-Remainder Theorem

For b > 0 and any a, there are unique numbers


q ::= quotient(a,b), r ::= remainder(a,b), such that
a = qb + r and 0  r < b.

We also say q = a div b and r = a mod b.

When b=2, this says that for any a,


there is a unique q such that a=2q or a=2q+1.

When b=3, this says that for any a,


there is a unique q such that a=3q or a=3q+1 or a=3q+2.
The Quotient-Remainder Theorem

For b > 0 and any a, there are unique numbers


q ::= quotient(a,b), r ::= remainder(a,b), such that
a = qb + r and 0  r < b.

Given any b, we can divide the integers into many blocks of b numbers.

For any a, there is a unique “position” for a in this line.

q = the block where a is in r = the offset in this block

a
-b b 2b kb (k+1)b
0

Clearly, given a and b, q and r are uniquely defined.


This Lecture

• Quotient remainder theorem

• Greatest common divisor & Euclidean algorithm

• Linear combination and GCD, extended Euclidean algorithm

• Prime factorization and other applications


Common Divisors

c is a common divisor of a and b means c|a and c|b.


gcd(a,b) ::= the greatest common divisor of a and b.

Say a=8, b=10, then 1,2 are common divisors, and gcd(8,10)=2.

Say a=10, b=30, then 1,2,5,10 are common divisors, and gcd(10,30)=10.

Say a=3, b=11, then the only common divisor is 1, and gcd(3,11)=1.

Claim. If p is prime, and p does not divide a, then gcd(p,a) = 1.


Greatest Common Divisors

Given a and b, how to compute gcd(a,b)?

Can try every number,


but can we do it more efficiently?

Let’s say a>b.

1. If a=kb, then gcd(a,b)=b, and we are done.

2. Otherwise, by the Division Theorem, a = qb + r for r>0.


Greatest Common Divisors

Let’s say a>b.

1. If a=kb, then gcd(a,b)=b, and we are done.

2. Otherwise, by the Division Theorem, a = qb + r for r>0.

a=12, b=8 => 12 = 8 + 4 gcd(12,8) = 4 gcd(8,4) = 4

a=21, b=9 => 21 = 2x9 + 3 gcd(21,9) = 3 gcd(9,3) = 3

a=99, b=27 => 99 = 3x27 + 18 gcd(99,27) = 9 gcd(27,18) = 9

Euclid: gcd(a,b) = gcd(b,r)!


Euclid’s GCD Algorithm

a = qb + r

Euclid: gcd(a,b) = gcd(b,r)

gcd(a,b)

if b = 0, then answer = a.

else

write a = qb + r

answer = gcd(b,r)
Example 1

gcd(a,b)
if b = 0, then answer = a.
else
write a = qb + r
answer = gcd(b,r)

GCD(102, 70) 102 = 70 + 32


= GCD(70, 32) 70 = 2x32 + 6
= GCD(32, 6) 32 = 5x6 + 2
= GCD(6, 2) 6 = 3x2 + 0
= GCD(2, 0)
Return value: 2.
Example 2

gcd(a,b)
if b = 0, then answer = a.
else
write a = qb + r
answer = gcd(b,r)

GCD(252, 189) 252 = 1x189 + 63


= GCD(189, 63) 189 = 3x63 + 0
= GCD(63, 0)
Return value: 63.
Example 3

gcd(a,b)
if b = 0, then answer = a.
else
write a = qb + r
answer = gcd(b,r)

GCD(662, 414) 662 = 1x414 + 248


= GCD(414, 248) 414 = 1x248 + 166
= GCD(248, 166) 248 = 1x166 + 82
= GCD(166, 82) 166 = 2x82 + 2
= GCD(82, 2) 82 = 41x2 + 0
= GCD(2, 0)
Return value: 2.
Correctness of Euclid’s GCD Algorithm

a = qb + r

Euclid: gcd(a,b) = gcd(b,r)

When r = 0:
Then gcd(b, r) = gcd(b, 0) = b since every number divides 0.
But a = qb so gcd(a, b) = b = gcd(b, r), and we are done.
Correctness of Euclid’s GCD Algorithm

a = qb + r Euclid: gcd(a,b) = gcd(b,r)

When r > 0:

Let d be a common divisor of b, r


Þ b = k1d and r = k2d for some k1, k2.

Þ a = qb + r = qk1d + k2d = (qk1 + k2)d => d is a divisor of a

Let d be a common divisor of a, b


Þ a = k3d and b = k1d for some k1, k3.

Þ r = a – qb = k3d – qk1d = (k3 – qk1)d => d is a divisor of r

So d is a common factor of a, b iff d is a common factor of b, r


Þ d = gcd(a, b) iff d = gcd(b, r)
How fast is Euclid’s GCD Algorithm?

Naive algorithm: try every number,

Then the running time is about 2b iterations.

Euclid’s algorithm:

In two iterations, the b is decreased by half. (why?)

Then the running time is about 2log(b) iterations.

Exponentially faster!!
This Lecture

• Quotient remainder theorem

• Greatest common divisor & Euclidean algorithm

• Linear combination and GCD, extended Euclidean algorithm

• Prime factorization and other applications


Linear Combination vs Common Divisor

Greatest common divisor

d is a common divisor of a and b if d|a and d|b

gcd(a,b) = greatest common divisor of a and b

Smallest positive integer linear combination

d is an integer linear combination of a and b if d=sa+tb for integers s,t.

spc(a,b) = smallest positive integer linear combination of a and b

Theorem: gcd(a,b) = spc(a,b)


Linear Combination vs Common Divisor

Theorem: gcd(a,b) = spc(a,b)

For example, the greatest common divisor of 52 and 44 is 4.


And 4 is a linear combination of 52 and 44:
6 · 52 + (−7) · 44 = 4
Furthermore, no linear combination of 52 and 44 is equal to a
smaller positive integer.

To prove the theorem, we will prove:

gcd(a,b) <= spc(a,b) gcd(a,b) | spc(a,b)

spc(a,b) <= gcd(a,b) spc(a,b) is a common divisor of a and b


GCD <= SPC

3. If d | a and d | b, then d | sa + tb for all s and t.

Proof of (3)
d | a => a = dk1

d | b => b = dk2

sa + tb = sdk1 + tdk2 = d(sk1 + tk2)


=> d|(sa+tb)

Let d = gcd(a,b). By definition, d | a and d | b.


GCD | SPC
Let f = spc(a,b) = sa+tb

By (3), d | f. This implies d <= f. That is gcd(a,b) <= spc(a,b).


SPC <= GCD

We will prove that spc(a,b) is actually a common divisor of a and b.

First, show that spc(a,b) | a.

1. Suppose, by way of contradiction, that spc(a,b) does not divide a.


2. Then, by the Division Theorem,
3. a = q x spc(a,b) + r and spc(a,b) > r > 0
4. Let spc(a,b) = sa + tb.
5. So r = a – q x spc(a,b) = a – q x (sa + tb) = (1-qs)a + qtb.
6. Thus r is an integer linear combination of a and b, and spc(a,b) > r.
7. This contradicts the definition of spc(a,b), and so r must be zero.

Similarly, spa(a,b) | b.

So, spc(a,b) is a common divisor of a and b, thus by definition spc(a,b) <= gcd(a,b).
Extended GCD Algorithm

How can we write gcd(a,b) as an integer linear combination?

This can be done by extending the Euclidean’s algorithm.

Example: a = 259, b=70

259 = 3·70 + 49 49 = a – 3b

70 = 1·49 + 21 21 = 70 - 49

21 = b – (a-3b) = -a+4b

49 = 2·21 + 7 7 = 49 - 2·21

7 = (a-3b) – 2(-a+4b) = 3a – 11b

21 = 7·3 + 0 done, gcd = 7


Extended GCD Algorithm

Example: a = 899, b=493

899 = 1·493 + 406 so 406 = a - b

493 = 1·406 + 87 so 87 = 493 – 406

= b – (a-b) = -a + 2b

406 = 4·87 + 58 so 58 = 406 - 4·87

= (a-b) – 4(-a+2b) = 5a - 9b

87 = 1·58 + 29 so 29 = 87 – 1·58

= (-a+2b) - (5a-9b) = -6a + 11b

58 = 2·29 + 0 done, gcd = 29


This Lecture

• Quotient remainder theorem

• Greatest common divisor & Euclidean algorithm

• Linear combination and GCD, extended Euclidean algorithm

• Prime factorization and other applications


Application of the Theorem

Theorem: gcd(a,b) = spc(a,b)

Why is this theorem useful?

(1) we can now “write down” gcd(a,b) as some concrete equation,


(i.e. gcd(a,b) = sa+tb for some integers s and t),
and this allows us to reason about gcd(a,b) much easier.

(2) If we can find integers s and t so that sa+tb=c,


then we can conclude that gcd(a,b) <= c.
In particular, if c=1, then we can conclude that gcd(a,b)=1.
Prime Divisibility

Theorem: gcd(a,b) = spc(a,b)

Lemma: p prime and p|a·b implies p|a or p|b.

pf: say p does not divide a. so gcd(p,a)=1.


So by the Theorem, there exist s and t such that
sa + tp =1
(sa)b + (tp)b = b
Hence p|b
p|ab p|p

Cor : If p is prime, and p| a1·a2···am then p|ai for some i.


Fundamental Theorem of Arithmetic

Every integer, n>1, has a unique factorization into primes:

p0 ≤ p1 ≤ ··· ≤ pk

p0 p1 ··· pk = n

Example:
61394323221 = 3·3·3·7·11·11·37·37·37·53
Unique Factorization

Theorem: There is a unique factorization.

proof: suppose, by contradiction,


that there are numbers with two different factorization.
By the well-ordering principle, we choose the smallest such n >1:

n = p1·p2···pk = q1·q2···qm

Since n is smallest, we must have that pi  qj all i,j

(Otherwise, we can obtain a smaller counterexample.)


contradiction!
Since p1|n = q1·q2···qm, so by Cor., p1|qi for some i.

Since both p1 = qi are prime numbers, we must have p1 = qi.


Application of the Theorem

Theorem: gcd(a,b) = spc(a,b)

Lemma. If gcd(a,b)=1 and gcd(a,c)=1, then gcd(a,bc)=1.

By the Theorem, there exist s,t,u,v such that

sa + tb = 1
ua + vc = 1

Multiplying, we have (sa + tb)(ua + vc) = 1


Þ saua + savc + tbua + tbvc = 1
Þ (sau + svc + tbu)a + (tv)bc = 1

By the Theorem, since spc(a,bc)=1, we have gcd(a,bc)=1


Die Hard

Simon says: On the fountain, there should be 2 jugs, do you see them? A
5-gallon and a 3-gallon. Fill one of the jugs with exactly 4 gallons of
water and place it on the scale and the timer will stop. You must be
precise; one ounce more or less will result in detonation. If you're still
alive in 5 minutes, we'll speak.
Die Hard
Bruce: Wait, wait a second. I don’t get it. Do you get it?
Samuel: No.
Bruce: Get the jugs. Obviously, we can’t fill the 3-gallon jug with 4
gallons of water.
Samuel: Obviously.
Bruce: All right. I know, here we go. We fill the 3-gallon jug exactly to the

top, right?
Samuel: Uh-huh.
Bruce: Okay, now we pour this 3 gallons into the 5-gallon jug, giving us
exactly 3 gallons in the 5-gallon jug, right?
Samuel: Right, then what?
Bruce: All right. We take the 3-gallon jug and fill it a third of the way...
Samuel: No! He said, “Be precise.” Exactly 4 gallons.
Bruce: Sh - -. Every cop within 50 miles is running his a - - off and I’m out
here playing kids games in the park.
Die Hard

Start with empty jugs: (0,0)


Fill the big jug: (0,5)

3 Gallon Jug 5 Gallon Jug


Die Hard

Pour from big to little: (3,2)

3 Gallon Jug 5 Gallon Jug


Die Hard

Empty the little: (0,2)

3 Gallon Jug 5 Gallon Jug


Die Hard

Pour from big to little: (2,0)

3 Gallon Jug 5 Gallon Jug


Die Hard

Fill the big jug: (2,5)

3 Gallon Jug 5 Gallon Jug


Die Hard

Pour from big to little: (3,4)

3 Gallon Jug 5 Gallon Jug


Done!!
Die Hard

What if you have a 9 gallon jug instead?

3 Gallon Jug 5 Gallon Jug 9 Gallon Jug

Can you do it? Can you prove it?


Die Hard

Supplies:

3 Gallon Jug

9 Gallon Jug
Water
Invariant Method

Invariant: the number of gallons in each jug is a multiple of 3.


i.e., 3|b and 3|l (3 divides b and 3 divides l)

Corollary: it is impossible to have exactly 4 gallons in one jug.

Bruce Dies!
Generalized Die Hard

Can Bruce form 3 gallons using 21 and 26-gallon jugs?

This question is not so easy to answer without number theory.


General Solution for Die Hard

Invariant in Die Hard Transition:


Suppose that we have water jugs with capacities B and L.
Then the amount of water in each jug is always an integer
linear combination of B and L.

Theorem: gcd(a,b) = spc(a,b)

Corollary: Every linear combination of a and b is a multiple of gcd(a, b).

Corollary: The amount of water in each jug is a multiple of gcd(a,b).


General Solution for Die Hard

Corollary: The amount of water in each jug is a multiple of gcd(a,b).

Given jug of 3 and jug of 9, is it possible to have exactly 4 gallons in one jug?

NO, because gcd(3,9)=3, and 4 is not a multiple of 3.

Given jug of 21 and jug of 26, is it possible to have exactly 3 gallons in one jug?

gcd(21,26)=1, and 3 is a multiple of 1,


so this possibility has not been ruled out yet.

Theorem. Given water jugs of capacity a and b,


it is possible to have exactly k gallons in one jug
if and only if k is a multiple of gcd(a,b).
General Solution for Die Hard

Theorem. Given water jugs of capacity a and b,


it is possible to have exactly k gallons in one jug
if and only if k is a multiple of gcd(a,b).

Given jug of 21 and jug of 26, is it possible to have exactly 3 gallons in one jug?

gcd(21,26) = 1
Þ 5x21 – 4x26 = 1
Þ 15x21 – 12x26 = 3

Repeat 15 times:
1. Fill the 21-gallon jug.
2. Pour all the water in the 21-gallon jug into the 26-gallon jug.
Whenever the 26-gallon jug becomes full, empty it out.
General Solution for Die Hard
15x21 – 12x26 = 3

Repeat 15 times:
1. Fill the 21-gallon jug.
2. Pour all the water in the 21-gallon jug into the 26-gallon jug.
Whenever the 26-gallon jug becomes full, empty it out.

1. There must be exactly 3 gallons left after this process.


2. Totally we have filled 15x21 gallons.
3. We pour out some multiple t of 26 gallons.
4. The 26 gallon jug can only hold somewhere between 0 and 26.
5. So t must be equal to 12.
6. And there are exactly 3 gallons left.
General Solution for Die Hard

Given two jugs with capacity A and B with A < B, the target is C.

If gcd(A,B) does not divide C, then it is impossible.

Otherwise, compute C = sA + tB.

Repeat s times:
1. Fill the A-gallon jug.
2. Pour all the water in the A-gallon jug into the B-gallon jug.
Whenever the B-gallon jug becomes full, empty it out.

The B-gallon jug will be emptied exactly t times.

After that, there will be exactly C gallons in the B-gallon jug.

You might also like