pfactors Subroutine

public subroutine pfactors(n, div)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n
integer, intent(out), dimension (:) :: div

Contents

Source Code


Source Code

  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