next_prime_internal Function

private pure function next_prime_internal(n) result(p)

Find next prime number >= n (simple implementation)

Arguments

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

Return Value integer


Called by

proc~~next_prime_internal~~CalledByGraph proc~next_prime_internal next_prime_internal proc~fragment_lookup_init fragment_lookup_t%fragment_lookup_init proc~fragment_lookup_init->proc~next_prime_internal proc~build_mbe_lookup_table build_mbe_lookup_table proc~build_mbe_lookup_table->proc~fragment_lookup_init proc~compute_mbe compute_mbe proc~compute_mbe->proc~build_mbe_lookup_table proc~global_coordinator global_coordinator proc~global_coordinator->proc~compute_mbe proc~serial_fragment_processor serial_fragment_processor proc~serial_fragment_processor->proc~compute_mbe interface~global_coordinator global_coordinator interface~global_coordinator->proc~global_coordinator interface~serial_fragment_processor serial_fragment_processor interface~serial_fragment_processor->proc~serial_fragment_processor

Variables

Type Visibility Attributes Name Initial
integer, private :: i
logical, private :: is_prime

Source Code

   pure function next_prime_internal(n) result(p)
      !! Find next prime number >= n (simple implementation)
      integer, intent(in) :: n
      integer :: p, i
      logical :: is_prime

      p = max(n, 2)
      if (modulo(p, 2) == 0) p = p + 1

      do
         is_prime = .true.
         do i = 3, int(sqrt(real(p))) + 1, 2
            if (modulo(p, i) == 0) then
               is_prime = .false.
               exit
            end if
         end do
         if (is_prime) return
         p = p + 2
      end do
   end function next_prime_internal