def find_3smooth(k0=100000, l0=100000): ''' Find the next 3-smooth number after 2**k0 * 3**l0. If that number is 2**k * 3**l then return k,l. ''' def pow(k,l): return 2**k * 3**l N0 = pow(k0,l0) k1,l1 = k0+1,l0 N1 = pow(k1,l1) k,l = k0,l0 while k>0: k -= 1 N = pow(k,l) if N0: k += 1 l -= 1 N = pow(k,l) if N>> 125743*np.log(2)-79335*np.log(3) 3.664710675366223e-06