In combinatorial mathematics, the nth Bell number, named after Eric Temple Bell, is the number of partitions of a set with n members, or equivalently, the number of equivalence relations on it. Starting with B_{0} = B_{1} = 1, the first few Bell numbers are:
(See also breakdown by number of subsets/equivalence classes.)
Contents 
In general, B_{n} is the number of partitions of a set of size n. A partition of a set S is defined as a set of nonempty, pairwise disjoint subsets of S whose union is S. For example, B_{3} = 5 because the 3element set {a, b, c} can be partitioned in 5 distinct ways:
B_{0} is 1 because there is exactly one partition of the empty set. Every member of the empty set is a nonempty set (that is vacuously true), and their union is the empty set. Therefore, the empty set is the only partition of itself.
Note that, as suggested by the set notation above, we consider neither the order of the partitions nor the order of elements within each partition. This means the following partitionings are all considered identical:
Bell numbers can also be viewed as the number of distinct possible ways of putting n distinguishable balls into one or more indistinguishable boxes. For example, let us suppose n is 3. We have three balls, which we will label a, b, and c, and three boxes. If the boxes can not be distinguished from each other, there are five ways of putting the balls in the boxes:
The Bell numbers satisfy this recursion formula:
They also satisfy "Dobinski's formula":
And they satisfy "Touchard's congruence": If p is any prime number then
or, generalizing
Each Bell number is a sum of Stirling numbers of the second kind
The Stirling number S(n, k) is the number of ways to partition a set of cardinality n into exactly k nonempty subsets.
The nth Bell number is also the sum of the coefficients in the polynomial that expresses the nth moment of any probability distribution as a function of the first n cumulants; this way of enumerating partitions is not as coarse as that given by the Stirling numbers.
The exponential generating function of the Bell numbers is
Several asymptotic formulae for the Bell numbers are known. One such is
Here
where W is the Lambert W function.
(Lovász, 1993)
The Bell numbers can easily be calculated by creating the socalled Bell triangle, also called Aitken's array or the Peirce triangle:
For example, the first row is made by placing one by itself. The next (second) row is made by taking the rightmost number from the previous row (1), and placing it on a new row. We now have a structure like this:
1 1 ''x''
The value x here is determined by adding the number to the left of x (one) and the number above the number to the left of x (also one).
1 1 2 y
The value y is determined by copying over the number from the right of the previous row. Since the number on the right hand side of the previous row has a value of 2, y is given a value of two.
1 1 2 2 3 ''x''
Again, since x is not the leftmost element of a given row, its value is determined by taking the sum of the number to x's left (three) and the number above the number to x's left (two). The sum is five.
Here is the first five rows of this triangle:
1 1 2 2 3 5 5 7 10 15 15 20 27 37 52
The fifth row is calculated thus:
The following is example code in the Ruby programming language that prints out all the Bell numbers from the 1st to the 300th inclusive (the limits can be adjusted)
#!/usr/bin/env ruby def print_bell_numbers(start, finish) # Initialize the Bell triangle as a twodimensional array triangle = Array[Array[1]] # Make sure "start" is less than "finish", and both numbers are at least 1 (finish, start = start, finish) if finish < start start = 1 if start < 1 finish = 1 if finish < 1 1.upto(finish1) do row_num # Set the first element of the current row to be the last element # of the previous row current_row = [triangle[row_num1][row_num1]] # Calculate the rest of the elements in this row, then add the row # to the Bell triangle 1.upto(row_num) do col_num sum = triangle[row_num1][col_num1] + current_row[col_num1] current_row.push(sum) end triangle[row_num] = current_row end # Print out the Bell numbers start.upto(finish) do num puts triangle[num1][0] end end # Adjust the limits here print_bell_numbers(1, 300)
The number in the nth row and kth column is the number of partitions of {1, ..., n} such that n is not together in one class with any of the elements k, k + 1, ..., n − 1. For example, there are 7 partitions of {1, ..., 4} such that 4 is not together in one class with either of the elements 2, 3, and there are 10 partitions of {1, ..., 4} such that 4 is not together in one class with element 3. The difference is due to 3 partitions of {1, ..., 4} such that 4 is together in one class with element 2, but not with element 3. This corresponds to the fact that there are 3 partitions of {1, ..., 3} such that 3 is not together in one class with element 2: for counting partitions two elements which are always in one class can be treated as just one element. The 3 appears in the previous row of the table.
The first few Bell numbers that are primes are:
corresponding to the indices 2, 3, 7, 13, 42 and 55 (sequence A051130 in OEIS).
The next prime is B_{2841}, which is approximately 9.30740105 × 10^{6538}. [1] As of 2006, it is the largest known prime Bell number. Phil Carmody showed it was a probable prime in 2002. After 17 months of computation with Marcel Martin's ECPP program Primo, Ignacio Larrosa Cañestro proved it to be prime in 2004. He ruled out any other possible primes below B_{6000}, later extended to B_{30447} by Eric Weisstein.
