Smooth number

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

In number theory, a positive integer is called B-smooth if none of its prime factors are greater than B. For example, 1,620 has prime factorization 22 × 34 × 5; therefore 1,620 is 5-smooth since none of its prime factors are greater than 5. 5-smooth numbers are also called regular numbers or Hamming numbers and arise in the study of Babylonian mathematics, music theory, and as a test problem for functional programming. 7-smooth numbers are sometimes called highly composite, although this conflicts with another meaning of that term.

Note that B does not have to be a prime factor. If the largest prime factor of a number is p then the number is B-smooth for any Bp. Usually B is given as a prime, but composite numbers work as well. A number is B-smooth if and only if it is p-smooth, where p is the largest prime less than or equal to B.

An important practical application of smooth numbers is for fast Fourier transform (FFT) algorithms such as the Cooley-Tukey FFT algorithm that operate by recursively breaking down a problem of a given size n into problems the size of its factors. By using B-smooth numbers, one ensures that the base cases of this recursion are small primes, for which efficient algorithms exist. (Large prime sizes require less-efficient algorithms such as Bluestein's FFT algorithm.)

Powersmooth numbers

Further, m is called B-powersmooth if all prime powers dividing m satisfy:

For example, 243251 is 16-powersmooth since its greatest prime factor power is 24 = 16. The number is also 17-powersmooth, 18-powersmooth, 19-powersmooth, etc.

B-smooth and B-powersmooth numbers have applications in number theory, such as in Pollard's p − 1 algorithm. Such applications are often said to work with "smooth numbers," with no B specified; this means the numbers involved must be B-smooth for some unspecified small number B; as B increases, the performance of the algorithm or method in question degrades rapidly. For example, the Pohlig-Hellman algorithm for computing discrete logarithms has a running time of O(B1/2) for groups of B-smooth order.


Let denote the de Bruijn function, the number of y-smooth integers less than or equal to x.

If the smoothness bound B is fixed and small, there is a good estimate for :

Otherwise, define the parameter u as u = log x / log y: that is, x = yu. Then we have

where is the Dickman-de Bruijn function.

See also


External links

  • Weisstein, Eric W. "Smooth Number". MathWorld.

The On-Line Encyclopedia of Integer Sequences (OEIS) lists B-smooth numbers for small B's: