Shortest Addition Chains
Alec Mihailovs
alec at mihailovs.com
Mon Dec 18 04:01:22 CET 2006
Achim Flammenkamp's web page
http://wwwhomes.uni-bielefeld.de/achim/addition_chain.html
contains a link to a file add25.bits.gz (about 3.34MB) with
2bit-packed numbers 0<=a(n)<=3 such that
A003313(n) = floor(log_2(n)) + ceil(log_2(nu(n))) + a(n)
where nu(n) is the sum of digits of n in base 2; for n from 1 to
2^25 = 33,554,432, calculated by Achim Flammenkamp and
Neill Clift.
When I wanted to check my calculations for n=27782, instead
of modifying ddt.c (link on the web page cited above) , I used
Python (in the interactive mode) and today I rewrote it as a
Python script,
#-----------lookup.py----------
from sys import argv
from struct import unpack
from math import log, floor, ceil
f=open("./add25.bits",'rb')
n=int(argv[1])-1
f.seek(n/4)
r=unpack('B',f.read(1))[0]
f.close()
a=(r>>2*(n%4))%4
n+=1
a+=floor(log(n,2))
u=0
while n>0:
u+=n%2
n=n>>1
print int(a+ceil(log(u,2)))
#-------------EOF-------------
It should be put in the same directory as the uncompressed
add25.bits file (8MB). It can be run from the cmd in Windows
(after cd to that directory, otherwise the path in f should be
written in the full form) as
python lookup.py 27782
for example, or with any other integer from 1 to 2^25 instead
of 27782.
I wonder if that could be incorporated in the OEIS in some form.
Perhaps, as a search form on the A003313 page.
Alec Mihailovs
http://mihailovs.com/Alec/
More information about the SeqFan
mailing list