0
我正在尋找一種更有效的方式來查找128位數的整數平方根... 需要使用NN庫我將使用此平臺的其中一個平臺,還沒有足夠的內存來BIGNUM或MPZ使用NN庫查找整數平方根
void NN_SquareRoot(NN_DIGIT *output, NN_DIGIT *input, int digits)
{
NN_DIGIT divisor[NS*2], Temp[NS*2], Temp2[NS*2], Temp3[NS*2];
int t;
int i;
int g;
unsigned char temp3[16];
NN_AssignZero(Temp2,NS);
for(t=0;t<digits;t++){
for(i=0;i<=255;i++){
temp3[t]=i;
NN_AssignZero(Temp,NS);
NN_Decode(Temp,16,temp3,NS/2);
NN_Mult(Temp2,Temp,Temp,NS/2);
if(NN_Cmp(input,Temp2,digits)==-1){
if(i!=0)temp3[t]=i-1;
if(t<digits)break;
t++;
i=0;
}
}
}
NN_Copy(output,Temp,NS);
}
您可以進行二分搜索,128個數字應該不超過64次迭代。 –
你有沒有例子? – Phillip