Book contents
- Frontmatter
- Contents
- Preface
- Preliminaries
- 1 Basic properties of the integers
- 2 Congruences
- 3 Computing with large integers
- 4 Euclid's algorithm
- 5 The distribution of primes
- 6 Finite and discrete probability distributions
- 7 Probabilistic algorithms
- 8 Abelian groups
- 9 Rings
- 10 Probabilistic primality testing
- 11 Finding generators and discrete logarithms in
- 12 Quadratic residues and quadratic reciprocity
- 13 Computational problems related to quadratic residues
- 14 Modules and vector spaces
- 15 Matrices
- 16 Subexponential-time discrete logarithms and factoring
- 17 More rings
- 18 Polynomial arithmetic and applications
- 19 Linearly generated sequences and applications
- 20 Finite fields
- 21 Algorithms for finite fields
- 22 Deterministic primality testing
- Appendix: Some useful facts
- Bibliography
- Index of notation
- Index
3 - Computing with large integers
Published online by Cambridge University Press: 05 June 2012
- Frontmatter
- Contents
- Preface
- Preliminaries
- 1 Basic properties of the integers
- 2 Congruences
- 3 Computing with large integers
- 4 Euclid's algorithm
- 5 The distribution of primes
- 6 Finite and discrete probability distributions
- 7 Probabilistic algorithms
- 8 Abelian groups
- 9 Rings
- 10 Probabilistic primality testing
- 11 Finding generators and discrete logarithms in
- 12 Quadratic residues and quadratic reciprocity
- 13 Computational problems related to quadratic residues
- 14 Modules and vector spaces
- 15 Matrices
- 16 Subexponential-time discrete logarithms and factoring
- 17 More rings
- 18 Polynomial arithmetic and applications
- 19 Linearly generated sequences and applications
- 20 Finite fields
- 21 Algorithms for finite fields
- 22 Deterministic primality testing
- Appendix: Some useful facts
- Bibliography
- Index of notation
- Index
Summary
In this chapter, we review standard asymptotic notation, introduce the formal computational model we shall use throughout the rest of the text, and discuss basic algorithms for computing with large integers.
Asymptotic notation
We review some standard notation for relating the rate of growth of functions. This notation will be useful in discussing the running times of algorithms, and in a number of other contexts as well.
Suppose that x is a variable taking non-negative integer or real values, and let g denote a real-valued function in x that is positive for all sufficiently large x; also, let f denote any real-valued function in x. Then
f = O(g) means that |f(x)| ≤ cg(x) for some positive constant c and all sufficiently large x (read, “f is big-O of g”),
f = Ω(g) means that f(x) ≥ cg(x) for some positive constant c and all sufficiently large x (read, “f is big-Omega of g”),
f = ⊗(g) means that cg(x) ≤ f(x) ≤ dg(x), for some positive constants c and d and all sufficiently large x (read, “f is big-Theta of g”),
f = o(g) means that f/g → 0 as x → ∞ (read, “f is little-o of g”), and
f ∼ g means that f/g → 1 as x → ∞ (read, “f is asymptotically equal to g”).
Example 3.1. Let f(x) ≔ x2 and g(x) ≔ 2x2 - x+1. Then f = O(g) and f = Ω(g). Indeed, f = ⊗(g). ▪
- Type
- Chapter
- Information
- Publisher: Cambridge University PressPrint publication year: 2005