PR is the complexity class of all primitive recursive functions—or, equivalently, the set of all formal languages that can be decided in time bounded by such a function. This includes addition, multiplication, exponentiation, tetration, etc.
The Ackermann function is an example of a function that is not primitive recursive, showing that PR is strictly contained in R (Cooper 2004:88).
On the other hand, we can "enumerate" any recursively enumerable set (see also its complexity class RE) by a primitive-recursive function in the following sense: given an input ( M , k ) {\displaystyle (M,k)} , where M {\displaystyle M} is a Turing machine and k {\displaystyle k} is an integer, if M {\displaystyle M} halts within k {\displaystyle k} steps then output M {\displaystyle M} ; otherwise output nothing. Then the union of the outputs, over all possible inputs ( M {\displaystyle M} , k {\displaystyle k} ), is exactly the set of M {\displaystyle M} that halt.
PR strictly contains ELEMENTARY.
PR does not contain "PR-complete" problems (assuming, e.g., reductions that belong to ELEMENTARY).