Download Arithmetic

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Mathematics of radio engineering wikipedia , lookup

Approximations of π wikipedia , lookup

Wiles's proof of Fermat's Last Theorem wikipedia , lookup

Vincent's theorem wikipedia , lookup

List of prime numbers wikipedia , lookup

History of logarithms wikipedia , lookup

Large numbers wikipedia , lookup

Elementary arithmetic wikipedia , lookup

Collatz conjecture wikipedia , lookup

Elementary mathematics wikipedia , lookup

Location arithmetic wikipedia , lookup

Horner's method wikipedia , lookup

Factorization of polynomials over finite fields wikipedia , lookup

Proofs of Fermat's little theorem wikipedia , lookup

Addition wikipedia , lookup

Quadratic reciprocity wikipedia , lookup

Arithmetic wikipedia , lookup

Transcript
Arithmetic
I. Fast Multiplication and the Master
Theorem on Divide and Conquer
How fast can we multiply?
• Adding two n-bit numbers takes O(n)
operations
• How many operations to multiply two n-bit
numbers?
• Or two n-decimal-digit numbers
– Difference is a factor of log210 ≈ 3.32 but the
individual operations are harder
Grade School Algorithm is Θ(n2)
• But answer is only O(n) bits: Can we do better?
A Divide and Conquer Algorithm
• Suppose n is even, n = 2m
• To compute a∙b
• Write a = a1∙2m + a0, b = b1∙2m + b0, where a1,
a0, b1, b0 are m-bit numbers (numbers < 2m) –
the first and last m bits of a and b
a∙b = a1b1∙22m + (a1b0+a0b1)∙2m + a0b0
= a1b1∙(22m+2m) + (a1-a0)(b0-b1)∙2m +
a0b0∙(2m+1)
Only 3 m-bit multiplications!!!
How Fast?
• T(1)=1
• T(n) = 3T(n/2) + cn
• But how to solve this?
Master Theorem on D+C
recurrences
•
•
•
•
T(1) = 1
T(n) = aT(n/b) + cne
Let L = logba
Recurrence has the solution:
1. T(n) = Θ(ne) if e > L
2. T(n) = Θ(ne log n) if e = L
3. T(n) = Θ(nL) if e < L
•
•
•
•
Binary search: a=1, b=2, e=0, L=0 [Case 2]
Merge sort: a=2, b=2, e=1, L=1 [Case 2]
Ordinary mult: a=4, b=2, e=1, L=2 [Case 3]
Fast mult: a=3, b=2, e=1, L=lg 3 so Θ(n1.58…) [Case 3]
II: Fast Exponentiation
Compute 313:
313 = 3∙3∙3∙3∙3∙3∙3∙3∙3∙3∙3∙3∙3
(12 multiplications, or Θ(exponent))
313 = 36∙36∙3 (2 multiplications)
36 = 33∙33 (1 multiplication)
33 can be computed with 2 multiplications
So 2+1+2 = 5 multiplications in all!
lec 4F.8
Fast Exponentiation
compute ab using registers X,Y,Z,R
X:= a; Y:= 1;
REPEAT:
Z:= b;
if Z=0, then return Y
R:= remdr(Z,2); Z:= quotnt(Z,2)
if R=1,then Y:= X⋅Y
X:= X2
lec 4F.9
Powers by Repeated Squaring
• Problem: compute ab
• Method 1: multiply a by itself n-1 times
– Requires n-1 multiplications
• Method 2: use successive squaring
– How many times can you divide n by 2 before
it is reduced to 1?
– Repeated squaring requires between log2n
and 2∙log2n multiplications
– Huge savings! n = 1000 => at most 20
multiplications! (since log21000 < 10)
February 28, 2007
Harvard Bits
10
III. Modular arithmetic
0
7
1
6
2
5
3
4
6 + 5 = 3 (mod 8)
February 28, 2007
11
Math Quiz
2x6 = 1
mod 11
2x6x5 =5
mod 11
23 = 1
mod 7
2300 = 1
mod 7
= (23)100 = 1100 = 1
February 28, 2007
12
(mod p) notation
• Think of the (mod p) at the end of the line
as referring to everything in the equation
• (23)100 = 1100 = 1 (mod 7) means
“(23)100 , 1100 , and 1 are all equivalent if you
divide by 7 and keep just the remainder”
Often written a ≡ b (mod p)
February 28, 2007
Harvard Bits
13
Fast Modular Exponentiation
• Problem: Given q and p and n, find y < p such that
qn = y (mod p)
• Method 1: multiply q by itself n-1 times
– Requires n-1 multiplications
• Method 2: use successive squaring
– Requires about log2n multiplications
• Same idea works for multiplication modulo p
• Example: If n is a 500-digit number, we can compute
qn (mod p) in about 1700 (= lg 10500) steps.
February 28, 2007
Harvard Bits
14
FINIS