import time
N=10.0**80
start = time.clock()
products_of_powers_of_2and3 = []
power_of_2 = 1
while power_of_2 < N:
product_of_powers_of_2and3 = power_of_2
while product_of_powers_of_2and3 < N:
products_of_powers_of_2and3.append(product_of_powers_of_2and3)
product_of_powers_of_2and3 *= 3
power_of_2 *= 2
products_of_powers_of_2and3.sort()
#print products_of_powers_of_2and3
stop = time.clock()
s1=stop - start
print "Elapsed", stop - start
start = time.clock()
S = [1]
i2 = 0 # current index in 2S
i3 = 0 # current index in 3S
while True:
n2 = 2 * S[i2]
n3 = 3 * S[i3]
m=min(n2, n3)
if m>=N:
break
S.append(m)
i2 += n2 <= n3
i3 += n2 >= n3
#print S
stop = time.clock()
s2=stop - start
print "Elapsed", stop - start
print len(products_of_powers_of_2and3), len(S), s2/s1
aW1wb3J0IHRpbWUKTj0xMC4wKio4MAoKc3RhcnQgPSB0aW1lLmNsb2NrKCkKcHJvZHVjdHNfb2ZfcG93ZXJzX29mXzJhbmQzID0gW10KcG93ZXJfb2ZfMiA9IDEKd2hpbGUgcG93ZXJfb2ZfMiA8IE46CiAgICBwcm9kdWN0X29mX3Bvd2Vyc19vZl8yYW5kMyA9IHBvd2VyX29mXzIKICAgIHdoaWxlIHByb2R1Y3Rfb2ZfcG93ZXJzX29mXzJhbmQzIDwgTjoKICAgICAgICBwcm9kdWN0c19vZl9wb3dlcnNfb2ZfMmFuZDMuYXBwZW5kKHByb2R1Y3Rfb2ZfcG93ZXJzX29mXzJhbmQzKQogICAgICAgIHByb2R1Y3Rfb2ZfcG93ZXJzX29mXzJhbmQzICo9IDMKICAgIHBvd2VyX29mXzIgKj0gMgpwcm9kdWN0c19vZl9wb3dlcnNfb2ZfMmFuZDMuc29ydCgpCiNwcmludCBwcm9kdWN0c19vZl9wb3dlcnNfb2ZfMmFuZDMKc3RvcCA9IHRpbWUuY2xvY2soKQpzMT1zdG9wIC0gc3RhcnQKcHJpbnQgIkVsYXBzZWQiLCBzdG9wIC0gc3RhcnQKCnN0YXJ0ID0gdGltZS5jbG9jaygpClMgPSBbMV0KaTIgPSAwICAjIGN1cnJlbnQgaW5kZXggaW4gMlMKaTMgPSAwICAjIGN1cnJlbnQgaW5kZXggaW4gM1MKd2hpbGUgVHJ1ZToKICAgIG4yID0gMiAqIFNbaTJdCiAgICBuMyA9IDMgKiBTW2kzXQogICAgbT1taW4objIsIG4zKQogICAgaWYgbT49TjoKICAgICAgICBicmVhawogICAgUy5hcHBlbmQobSkKICAgIGkyICs9IG4yIDw9IG4zCiAgICBpMyArPSBuMiA+PSBuMwojcHJpbnQgUwpzdG9wID0gdGltZS5jbG9jaygpCnMyPXN0b3AgLSBzdGFydApwcmludCAiRWxhcHNlZCIsIHN0b3AgLSBzdGFydAoKcHJpbnQgbGVuKHByb2R1Y3RzX29mX3Bvd2Vyc19vZl8yYW5kMyksIGxlbihTKSwgczIvczE=