# 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