Decomposes an integer into its prime factors.
N — Integer to be decomposed. (Input)
NPF — Number of
different prime factors of ABS(N).
(Output)
If N is equal to −1, 0,
or 1, NPF is set
to 0.
IPF — Integer
vector of length 13. (Output)
IPF(I) contains the prime
factors of the absolute value of N, for I = 1, …, NPF. The remaining 13
− NPF locations
are not used.
IEXP — Integer
vector of length 13. (Output)
IEXP(I) is the exponent of
IPF(I), for I = 1, …, NPF. The remaining 13
− NPF locations
are not used.
IPW — Integer
vector of length 13. (Output)
IPW(I) contains the
quantity IPF(I)**IEXP(I), for I = 1, …, NPF. The remaining
13 − NPF
locations are not used.
Generic: CALL PRIME (N, NPF, IPF, IPW)
Specific: The specific interface name is PRIME.
Single: CALL PRIME (N, NPF, IPF, IEXP, IPW)
Routine PRIME
decomposes an integer into its prime factors. The number to be factored,
N, may not have more than 13 distinct factors. The smallest number with
more than 13 factors is about
1.3 × 1016. Most computers do
not allow integers of this size.
The routine PRIME is based on a routine by Brenner (1973).
The output from PRIME
should be interpreted in the following way:
ABS(N)
= IPF(1)**IEXP(1)
*
…. *
IPF(NPF)**IEXP(NPF).
This example factors the integer 144 = 2432.
USE PRIME_INT
USE UMACH_INT
IMPLICIT NONE
INTEGER N
PARAMETER (N=144)
!
INTEGER IEXP(13), IPF(13), IPW(13), NOUT, NPF
! Get prime factors of 144
CALL PRIME (N, NPF, IPF, IEXP, IPW)
! Get output unit number
CALL UMACH (2, NOUT)
! Print results
WRITE (NOUT,99999) N, IPF(1), IPF(2), IEXP(1), IEXP(2), IPW(1), &
IPW(2), NPF
!
99999 FORMAT (' The prime factors for', I5, ' are: ', /, 10X, 2I6, // &
' IEXP =', 2I6, /, ' IPW =', 2I6, /, ' NPF =', I6, /)
END
The prime factors for 144 are:
2 3
IEXP = 4 2
IPW = 16 9
NPF = 2
Visual Numerics, Inc. PHONE: 713.784.3131 FAX:713.781.9260 |