module OW_gcd

implicit none

contains

 subroutine owgcd(n,iq,q,indq)

 integer			:: n,k,i,m,j,iq,q(:)
 integer			:: q1(1000),indq(1)

 k=2**n-1
 iq=0;q1=0;q=0

 do i=1,k
    m=n;j=i
    do while (j .ne. m)
       if (j .gt. m) then
          j=j-m
       else
          m=m-j
       end if
    end do
    if ((j.eq.1).or.(m.eq.1)) then
       iq=iq+1
       q1(iq) = i
    end if
 end do

 do i=1,iq
    if (q1(i) < 31) then
        q(i)=2**q1(i)+1
    end if
 end do

 indq=maxloc(q)

 end subroutine

end module
