14
1 SWE2004: Principles in Programming | Spring 2015 | Euiseong Seo ([email protected]) Lecture 7 Number Theory Euiseong Seo ([email protected])

Lecture 7 Number Theory - AndroBenchcsl.skku.edu/uploads/SWE2004S15/Lecture7.pdf · 2015-04-14 · Lecture 7 Number Theory Euiseong Seo ([email protected]) SWE2004: Principles in

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Lecture 7 Number Theory - AndroBenchcsl.skku.edu/uploads/SWE2004S15/Lecture7.pdf · 2015-04-14 · Lecture 7 Number Theory Euiseong Seo (euiseong@skku.edu) SWE2004: Principles in

1 SWE2004: Principles in Programming | Spring 2015 | Euiseong Seo ([email protected])

Lecture 7 Number Theory

Euiseong Seo ([email protected])

Page 2: Lecture 7 Number Theory - AndroBenchcsl.skku.edu/uploads/SWE2004S15/Lecture7.pdf · 2015-04-14 · Lecture 7 Number Theory Euiseong Seo (euiseong@skku.edu) SWE2004: Principles in

2 SWE2004: Principles in Programming | Spring 2015 | Euiseong Seo ([email protected])

Number Theory §  God created the integers. All else is the work

of man – Leopold Kronecker §  Study of the property of the integers

•  Specifically, integer divisibility •  Full of beautiful proofs and surprising results

§  b divides a •  b|a •  a = bk for some integer k •  b is a divisor of a •  a is a multiple of b

Page 3: Lecture 7 Number Theory - AndroBenchcsl.skku.edu/uploads/SWE2004S15/Lecture7.pdf · 2015-04-14 · Lecture 7 Number Theory Euiseong Seo (euiseong@skku.edu) SWE2004: Principles in

3 SWE2004: Principles in Programming | Spring 2015 | Euiseong Seo ([email protected])

Prime Numbers §  Prime Numbers

•  integers p > 1 which are only divisible by 1 and itself •  if p is a prime numner, then p = a*b for integers a <= b

implies that a = 1 and b = p §  Fundamental theorem of arithmetic

•  Every integer can be expressed in only one way as the product of primes

•  Examples –  105 = 3 * 5 * 7 –  32 = 2 * 2 * 2 * 2 * 2

•  Prime factorization §  Any number which is not prime is a composite

Page 4: Lecture 7 Number Theory - AndroBenchcsl.skku.edu/uploads/SWE2004S15/Lecture7.pdf · 2015-04-14 · Lecture 7 Number Theory Euiseong Seo (euiseong@skku.edu) SWE2004: Principles in

4 SWE2004: Principles in Programming | Spring 2015 | Euiseong Seo ([email protected])

Primality Testing and Factorization

§  There are an infinite number of primes (Euclid’s proof)

§  x / ln x number of primes that are less than or equal to x

§  The smallest prime factor of n is at most √n unless n is a prime

Page 5: Lecture 7 Number Theory - AndroBenchcsl.skku.edu/uploads/SWE2004S15/Lecture7.pdf · 2015-04-14 · Lecture 7 Number Theory Euiseong Seo (euiseong@skku.edu) SWE2004: Principles in

5 SWE2004: Principles in Programming | Spring 2015 | Euiseong Seo ([email protected])

Constructing All Divisors §  Every divisor is the product of some subset of

these prime factors §  Such subsets can be constructed using

backtracking techniques •  Be careful about duplicate prime factors •  12 has three terms but has only six divisors

Page 6: Lecture 7 Number Theory - AndroBenchcsl.skku.edu/uploads/SWE2004S15/Lecture7.pdf · 2015-04-14 · Lecture 7 Number Theory Euiseong Seo (euiseong@skku.edu) SWE2004: Principles in

6 SWE2004: Principles in Programming | Spring 2015 | Euiseong Seo ([email protected])

Greatest Common Divisor §  Largest divisor shared by a given pair of

integers §  Used to obtain the reduced form of a fraction §  Euclid’s GCD algorithms

•  If b|a, then gdb(a,b) = b •  If a = bt + r for integers t and r, then gcd(a,b) = gcd(b,r)

§  ax + by = gcd(a,b)

Page 7: Lecture 7 Number Theory - AndroBenchcsl.skku.edu/uploads/SWE2004S15/Lecture7.pdf · 2015-04-14 · Lecture 7 Number Theory Euiseong Seo (euiseong@skku.edu) SWE2004: Principles in

7 SWE2004: Principles in Programming | Spring 2015 | Euiseong Seo ([email protected])

Greatest Common Divisor Implementation

/* Find the gcd(p,q) and x,y such that p*x + q*y = gcd(p,q) */

long gcd(long p, long q, long *x, long *y){

long x1,y1; /* previous coefficients */long g; /* value of gcd(p,q) */

if (q > p) return(gcd(q,p,y,x));

if (q == 0) {

*x = 1;

*y = 0;return(p);

}

g = gcd(q, p%q, &x1, &y1);

*x = y1;

*y = (x1 - floor(p/q)*y1);

return(g);}

The least common multiple (lcm), the smallest integer whichis divided by both of a given pair of integers. For example,the least common multiple of 24 and 36 is 72.To compute it, observe that lcm(x, y) = xy/gcd(x, y).

Page 8: Lecture 7 Number Theory - AndroBenchcsl.skku.edu/uploads/SWE2004S15/Lecture7.pdf · 2015-04-14 · Lecture 7 Number Theory Euiseong Seo (euiseong@skku.edu) SWE2004: Principles in

8 SWE2004: Principles in Programming | Spring 2015 | Euiseong Seo ([email protected])

Least Common Multiple §  The smallest integer which is divided by both

of a given pair of integers §  lcm(x,y) = xy / gcd(x,y)

Page 9: Lecture 7 Number Theory - AndroBenchcsl.skku.edu/uploads/SWE2004S15/Lecture7.pdf · 2015-04-14 · Lecture 7 Number Theory Euiseong Seo (euiseong@skku.edu) SWE2004: Principles in

9 SWE2004: Principles in Programming | Spring 2015 | Euiseong Seo ([email protected])

Modular Arithmetic §  What day of the week will your birthday fall on

next year? §  Modular arithmetic

•  modulus •  residue

§  (x+y) mod n = ((x mod n) + (y mod n)) mod n §  (12 mod 100) – (53 mod 100) = -41 mod 100

= 59 mod 100 §  xy mod n = (x mod n)(y mod n) mod n §  xy mod n = (x mod n)y mod n

Page 10: Lecture 7 Number Theory - AndroBenchcsl.skku.edu/uploads/SWE2004S15/Lecture7.pdf · 2015-04-14 · Lecture 7 Number Theory Euiseong Seo (euiseong@skku.edu) SWE2004: Principles in

10 SWE2004: Principles in Programming | Spring 2015 | Euiseong Seo ([email protected])

Modular Arithmetic §  Finding the last digit – What is the last digit of

2100?

Page 11: Lecture 7 Number Theory - AndroBenchcsl.skku.edu/uploads/SWE2004S15/Lecture7.pdf · 2015-04-14 · Lecture 7 Number Theory Euiseong Seo (euiseong@skku.edu) SWE2004: Principles in

11 SWE2004: Principles in Programming | Spring 2015 | Euiseong Seo ([email protected])

Light, More Light

7.6. Problems 157

7.6 Problems

7.6.1 Light, More LightPC/UVa IDs: 110701/10110, Popularity: A, Success rate: average Level: 1

There is man named Mabu who switches on-off the lights along a corridor at ouruniversity. Every bulb has its own toggle switch that changes the state of the light. Ifthe light is off, pressing the switch turns it on. Pressing it again will turn it off. Initiallyeach bulb is off.

He does a peculiar thing. If there are n bulbs in a corridor, he walks along the corridorback and forth n times. On the ith walk, he toggles only the switches whose positionis divisible by i. He does not press any switch when coming back to his initial position.The ith walk is defined as going down the corridor (doing his peculiar thing) and comingback again. Determine the final state of the last bulb. Is it on or off?

InputThe input will be an integer indicating the nth bulb in a corridor, which is less than orequal to 232 − 1. A zero indicates the end of input and should not be processed.

OutputOutput “yes” or “no” to indicate if the light is on, with each case appearing on its ownline.

Sample Input3624181910

Sample Outputnoyesno

7.6. Problems 157

7.6 Problems

7.6.1 Light, More LightPC/UVa IDs: 110701/10110, Popularity: A, Success rate: average Level: 1

There is man named Mabu who switches on-off the lights along a corridor at ouruniversity. Every bulb has its own toggle switch that changes the state of the light. Ifthe light is off, pressing the switch turns it on. Pressing it again will turn it off. Initiallyeach bulb is off.

He does a peculiar thing. If there are n bulbs in a corridor, he walks along the corridorback and forth n times. On the ith walk, he toggles only the switches whose positionis divisible by i. He does not press any switch when coming back to his initial position.The ith walk is defined as going down the corridor (doing his peculiar thing) and comingback again. Determine the final state of the last bulb. Is it on or off?

InputThe input will be an integer indicating the nth bulb in a corridor, which is less than orequal to 232 − 1. A zero indicates the end of input and should not be processed.

OutputOutput “yes” or “no” to indicate if the light is on, with each case appearing on its ownline.

Sample Input3624181910

Sample Outputnoyesno

Page 12: Lecture 7 Number Theory - AndroBenchcsl.skku.edu/uploads/SWE2004S15/Lecture7.pdf · 2015-04-14 · Lecture 7 Number Theory Euiseong Seo (euiseong@skku.edu) SWE2004: Principles in

12 SWE2004: Principles in Programming | Spring 2015 | Euiseong Seo ([email protected])

Light, More Light

7.6. Problems 157

7.6 Problems

7.6.1 Light, More LightPC/UVa IDs: 110701/10110, Popularity: A, Success rate: average Level: 1

There is man named Mabu who switches on-off the lights along a corridor at ouruniversity. Every bulb has its own toggle switch that changes the state of the light. Ifthe light is off, pressing the switch turns it on. Pressing it again will turn it off. Initiallyeach bulb is off.

He does a peculiar thing. If there are n bulbs in a corridor, he walks along the corridorback and forth n times. On the ith walk, he toggles only the switches whose positionis divisible by i. He does not press any switch when coming back to his initial position.The ith walk is defined as going down the corridor (doing his peculiar thing) and comingback again. Determine the final state of the last bulb. Is it on or off?

InputThe input will be an integer indicating the nth bulb in a corridor, which is less than orequal to 232 − 1. A zero indicates the end of input and should not be processed.

OutputOutput “yes” or “no” to indicate if the light is on, with each case appearing on its ownline.

Sample Input3624181910

Sample Outputnoyesno

Page 13: Lecture 7 Number Theory - AndroBenchcsl.skku.edu/uploads/SWE2004S15/Lecture7.pdf · 2015-04-14 · Lecture 7 Number Theory Euiseong Seo (euiseong@skku.edu) SWE2004: Principles in

13 SWE2004: Principles in Programming | Spring 2015 | Euiseong Seo ([email protected])

Factovisors 160 7. Number Theory

7.6.4 FactovisorsPC/UVa IDs: 110704/10139, Popularity: A, Success rate: average Level: 2

The factorial function, n! is defined as follows for all non-negative integers n:

0! = 1n! = n × (n − 1)! (n > 0)

We say that a divides b if there exists an integer k such that

k × a = b

InputThe input to your program consists of several lines, each containing two non-negativeintegers, n and m, both less than 231.

OutputFor each input line, output a line stating whether or not m divides n!, in the formatshown below.

Sample Input6 96 2720 1000020 1000001000 1009

Sample Output9 divides 6!27 does not divide 6!10000 divides 20!100000 does not divide 20!1009 does not divide 1000!

160 7. Number Theory

7.6.4 FactovisorsPC/UVa IDs: 110704/10139, Popularity: A, Success rate: average Level: 2

The factorial function, n! is defined as follows for all non-negative integers n:

0! = 1n! = n × (n − 1)! (n > 0)

We say that a divides b if there exists an integer k such that

k × a = b

InputThe input to your program consists of several lines, each containing two non-negativeintegers, n and m, both less than 231.

OutputFor each input line, output a line stating whether or not m divides n!, in the formatshown below.

Sample Input6 96 2720 1000020 1000001000 1009

Sample Output9 divides 6!27 does not divide 6!10000 divides 20!100000 does not divide 20!1009 does not divide 1000!

Page 14: Lecture 7 Number Theory - AndroBenchcsl.skku.edu/uploads/SWE2004S15/Lecture7.pdf · 2015-04-14 · Lecture 7 Number Theory Euiseong Seo (euiseong@skku.edu) SWE2004: Principles in

14 SWE2004: Principles in Programming | Spring 2015 | Euiseong Seo ([email protected])

Factovisors

160 7. Number Theory

7.6.4 FactovisorsPC/UVa IDs: 110704/10139, Popularity: A, Success rate: average Level: 2

The factorial function, n! is defined as follows for all non-negative integers n:

0! = 1n! = n × (n − 1)! (n > 0)

We say that a divides b if there exists an integer k such that

k × a = b

InputThe input to your program consists of several lines, each containing two non-negativeintegers, n and m, both less than 231.

OutputFor each input line, output a line stating whether or not m divides n!, in the formatshown below.

Sample Input6 96 2720 1000020 1000001000 1009

Sample Output9 divides 6!27 does not divide 6!10000 divides 20!100000 does not divide 20!1009 does not divide 1000!