Best search algorithm to find condition within a range

jonas.thornvall at gmail.com jonas.thornvall at gmail.com
Tue Apr 7 05:44:24 EDT 2015


I want todo faster baseconversion for very big bases like base 1 000 000, so instead of adding up digits i search it. 
I need the fastest algorithm to find the relation to a decimal number. 
Digmult is an instance of base at a digitplace (base^x) what i try to find is the digit for the below condition is true and the loop break. 
********************************* 
for (digit=0;digit<=base;digit++) { 
 if((digit+1)*digmult>decNumber)break; 
} 
********************************* 
So i am looking for the digit where following condition true. 
if((digit)*digmult<decNumber) AND if((digit+1)*digmult>decNumber) then BREAK; 
One could start at half base searching, but then i Think i've read that using 1/3 closing in faster? 
I Think also i remember that if the search space so big that at least 22 or 23 guesses, needed.A random Oracle may even faster? 
Just pick up a number and get lucky, is it any truth to that? 
Below the actual algorithm. 
<SCRIPT LANGUAGE="Javascript"> 
//CONVERT A DECIMAL NUMBER INTO ANYBASE 
function newbase(decNumber,base){ 
digits=1; 
digmult=1; 
while(digmult*base<=decNumber){ 
 digmult=digmult*base 
 digits++; 
} 
digsave=digmult; 
while(decNumber>0 || digits>0){ 
 loop=1; 
 digit=0; 
 for (digit=0;digit<=base;digit++) { 
 if((digit+1)*digmult>decNumber)break; 
 } 
 out[digits]=digit; 
 digmult=digmult*digit; 
 decNumber=decNumber-digmult; 
 digsave=digsave/base; 
 digmult=digsave; 
 digits--; 
 } 
return out; 
} 
var out= []; 
base=256; 
number=854544; 
out=newbase(number,base); 
out.reverse(); 
document.write("Number = ",out,"<BR>"); 
</script> 
 
 


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /