Mit Spass am Knobeln läßt sich auch eine Formel finden die den lookup durch direkte Berechnung ersetzt. Z.B.:
Code:
int lookup(int x) {
int tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
	tmp2=x+1;
	tmp1= x==2?-1:(x-1)/( x-2);
	tmp5=tmp1;
	tmp1-=tmp2;

	tmp4=(tmp1+tmp5+1)%tmp1+2;
	tmp1=70^tmp2;
	tmp3=tmp1-2;
	tmp1++;
		
	tmp7=tmp1;
	tmp6=2*(tmp1%tmp2) &tmp3;
		
	tmp3-=3;
	tmp1&=tmp3;
	tmp2=(((tmp1+tmp3|tmp7)^tmp5 |tmp2)+4)|tmp7;
	tmp1=(4|tmp7|tmp4)+tmp3;
	tmp1^=2;
	tmp1|=tmp7+1;
	tmp1^=tmp5;
	tmp1=tmp1/2+6;
	tmp1|=tmp7+1;
	return (tmp1^tmp2)+tmp7-((sign(tmp6)*tmp4+1)^1)-tmp6;
}
Zugegeben, etwas häßlich und voluminös geraten. Vielleicht geht's ja eleganter?