thread_num = omp_get_num_threads ( ) solution_num = 0 !$omp parallel private ( i, ilo, ihi, j, value, x ) & !$omp shared ( n, thread_num ) & !$omp reduction ( + : solution_num ) id = omp_get_thread_num ( ) ilo = id * 65536 / thread_num ihi = ( id + 1 ) * 65536 / thread_num j = ilo do i = n, 1, -1 x(i) = mod ( j, 2 ) j = j / 2 end do do i = ilo, ihi - 1 value = circuit_value ( n, x ) if ( value == 1 ) then solution_num = solution_num + 1 write ( *, '(2x,i2,2x,i10,3x,16i2)' ) solution_num, i - 1, x(1:n) end if call bvec_next ( n, x ) end do !$omp end parallel