FIXME : Add documentation
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | n | |||
integer, | intent(out), | dimension (:) | :: | div |
subroutine pfactors (n, div)
integer, intent (in) :: n
integer, dimension (:), intent (out) :: div
integer, dimension (50), parameter :: primes = (/ &
2, 3, 5, 7, 11, &
13, 17, 19, 23, 29, &
31, 37, 41, 43, 47, &
53, 59, 61, 67, 71, &
73, 79, 83, 89, 97, &
101, 103, 107, 109, 113, &
127, 131, 137, 139, 149, &
151, 157, 163, 167, 173, &
179, 181, 191, 193, 197, &
199, 211, 223, 227, 229 /)
integer :: i, ntmp
ntmp = n
i=1
do while (ntmp > 1 .and. i < 51)
do while (mod(ntmp, primes(i)) == 0)
if (i < 4) div(i) = div(i) + 1
if (i > 3) div(4) = primes(i)
ntmp = ntmp / primes(i)
end do
i=i+1
end do
end subroutine pfactors