This subroutine finds about the number of processors that the job runs on:

n2 = NUMBER_OF_PROCESSORS()and then simply checks if that number can be represented as

where

The subroutine goes about its business by trying to divide
the returned number of nodes by 11, then by 7, then by 5, and
finally by 3. Because in the latter case *i* can be 0, 1, or 2, the logic
is a little more convoluted, i.e., we have to check both for 3^{1} and
3^{2}.

The subroutine also checks if there is a 2^{h} factor in `n2`

, but
it does not check if *h* is less than 25, which is going to
cause problems on machines with more than
2^{25} = 33,554,432
processors. That check is done by calling function
`minpower2`

.

The resulting powers are returned on an array `pn_fac`

:

If the number of nodes is not of the form

the subroutine writes an advisory error message and bails out.