220 likes | 230 Views
CSE 311 Foundations of Computing I. Lecture 12 Primes, GCD, Modular Inverse Spring 2013. Announcements. Reading assignments Today : 7 th Edition: 4.3-4.4 (the rest of the chapter is interesting!) 6 th Edition: 3.5, 3.6 Monday: Mathematical Induction 7 th Edition: 5.1, 5.2
E N D
CSE 311 Foundations of Computing I Lecture 12 Primes, GCD, Modular Inverse Spring 2013
Announcements • Reading assignments • Today : • 7th Edition: 4.3-4.4 (the rest of the chapter is interesting!) • 6thEdition: 3.5, 3.6 • Monday: Mathematical Induction • 7th Edition: 5.1, 5.2 • 6th Edition: 4.1, 4.2
Fast exponentiation algorithm • What if the exponent is not a power of two? 81453 = 216 + 213 + 212 + 211 + 210 + 29 + 25 + 23 + 22 + 20 7836581453=7836521678365213 78365212 78365211 … The fast exponentiation algorithm computes an mod m in time O(log n)
Primality An integer p greater than 1 is called prime if the only positive factors of p are 1 and p. A positive integer that is greater than 1 and is not prime is called composite.
Fundamental Theorem of Arithmetic • Every positive integer greater than 1 has a unique prime factorization 48 = 2 • 2 • 2 • 2 • 3 591 = 3 • 197 45,523 = 45,523 321,950 = 2 • 5 • 5 • 47 • 137 1,234,567,890 = 2 • 3 • 3 • 5 • 3,607 • 3,803
Factorization If n is composite, it has a factor of size at most sqrt(n)
Euclid’s theorem There are an infinite number of primes. Proof: By contradiction Suppose there are a finite number of primes: p1, p2, . . ., pn
Distribution of Primes 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 • If you pick a random number n in the range [x, 2x], what is the chance that n is prime?
Famous Algorithmic Problems • Primality Testing: • Given an integer n, determine if n is prime • Factoring • Given an integer n, determine the prime factorization of n
Factoring • Factor the following 232 digit number [RSA768]: 1230186684530117755130494958384962720772853569595334792197322452151726400507263657518745202199786469389956474942774063845925192557326303453731548268507917026122142913461670429214311602221240479274737794080665351419597459856902143413
12301866845301177551304949583849627207728535695953347921973224521517264005072636575187452021997864693899564749427740638459251925573263034537315482685079170261221429134616704292143116022212404792747377940806653514195974598569021434131230186684530117755130494958384962720772853569595334792197322452151726400507263657518745202199786469389956474942774063845925192557326303453731548268507917026122142913461670429214311602221240479274737794080665351419597459856902143413 33478071698956898786044169848212690817704794983713768568912431388982883793878002287614711652531743087737814467999489 36746043666799590428244633799627952632279158164343087642676032283815739666511279233373417143396810270092798736308917
Greatest Common Divisor • GCD(a, b): Largest integer d such that d|a and d|b • GCD(100, 125) = • GCD(17, 49) = • GCD(11, 66) = • GCD(13, 0 ) = • GCD(180, 252) =
GCD and Factoring a = 23 • 3 • 52 • 7 • 11 = 46,200 b = 2 • 32 • 53 • 7 • 13 = 204,750 GCD(a, b) = 2min(3,1) • 3min(1,2) • 5min(2,3) • 7min(1,1) • 11min(1,0) • 13min(0,1) Factoring is expensive! Can we compute GCD(a,b) without factoring?
Useful GCD fact If a and b are positive integers, then gcd(a,b) = gcd(b, a mod b) Proof: By definition a = (a div b) b + (a mod b) If d|a and d|b then d|(a mod b): If d|band d|(a mod b) then d|a:
Euclid’s Algorithm Repeatedly use the GCD fact to reduce numbers until you get GCD(x,0)=x GCD(660,126)
Euclid’s Algorithm Example: GCD(660, 126) • GCD(x, y) = GCD(y, x mod y) int GCD(int a, int b){ /* a >= b, b > 0 */ inttmp; int x = a; int y = b; while (y > 0){ tmp = x % y; x = y; y = tmp; } return x; }
Bézoit’sTheorem If a and b are positive integers, then there exist integers s and t such that gcd(a,b) = sa + tb.
Extended Euclid’s Algorithm • Can use Euclid’s Algorithm to find s,t such that sa+tb=gcd(a,b) • e.g. gcd(35,27): 35 = 1• 27 + 8 35 - 1 • 27 =8 27= 3• 8 + 3 27- 3• 8 = 3 8 = 2• 3 + 2 8 - 2• 3 = 2 3 = 1• 2 +1 3 - 1• 2 = 1 2 = 2• 1 +0 1= 3 - 1• 2 = 3 – 1 (8 - 2• 3) = (-1)• 8 + 3• 3 =(-1) •8 + 3(27- 3• 8 ) =3 • 27 + (-10)•8 =
Multiplicative Inverse mod m Suppose GCD(a, m) = 1 By Bézoit’sTheorem, there exist integers s and t such that sa + tm = 1. s is the multiplicative inverse of a: 1 = (sa + tm) mod m = sa mod m
Solving Modular Equations Solving ax ≡ b (mod m) for unknown x when gcd(a,m)=1. • Find s such that sa+tm=1 • Compute a-1= s mod m, the multiplicative inverse of a modulo m • Set x = (a-1 • b) mod m
Multiplicative Cipher: f(x) = ax mod m For a multiplicative cipher to be invertible: f(x) = ax mod m : {0, m-1} → {0, m-1} must be one to one and onto Lemma: If there is an integer b such that ab mod m = 1, then the function f(x) = ax mod m is one to one and onto.