How to find the first power of 2 whose leading digits are 12 in Ruby

1 Answer

0 votes
# return true if 2^n starts with prefix, else false
def starts_with_prefix(n, prefix)
  log2v = Math.log10(2.0)

  x = n * log2v
  frac = x - x.floor

  # count digits in prefix
  buf = prefix.to_s
  digits = buf.length

  # compute leading digits
  leading = (10 ** (frac + digits - 1)).floor

  leading == prefix
end

def main
  prefix = 12

  n = 1
  loop do
    if starts_with_prefix(n, prefix)
      puts "First n = #{n}"
      puts "2 ^ #{n} = #{(2 ** n)}"
      break
    end
    n += 1
  end
end

main



=begin
run:

First n = 7
2 ^ 7 = 128

=end

 



answered 5 hours ago by avibootz

Related questions

...