# Smooth number

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 ${\displaystyle \scriptstyle p_{i}^{n_{i}}}$ dividing m satisfy:

${\displaystyle p_{i}^{n_{i}}\leq B.\,}$

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.

## Distribution

Let ${\displaystyle \scriptstyle \Psi (x,y)}$ 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 ${\displaystyle \scriptstyle \psi (x,B)}$:

${\displaystyle \Psi (x,B)\sim {\frac {1}{\pi (B)!}}\prod _{p\leq B}{\frac {\log x}{\log p}}.}$

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

${\displaystyle \Psi (x,y)=x\cdot \rho (u)+O\left({\frac {x}{\log y}}\right)}$

where ${\displaystyle \scriptstyle \rho (u)}$ is the Dickman-de Bruijn function.