JavaScript квадратный корень из большого (BigInt ) целого числа
Что можно использовать в JS для вычисления квадратного корня из целого числа типа BigInt? Обычный Math.sqrt() не работает с числами типа BigInt.
Ответы (1 шт):
Автор решения: AlexShag
→ Ссылка
Для полноты картины, пока ждал ответ наваял вот такое своё.
function BigSqrt(n){
var n1,n2,nc,nkv;
if (n < 0n) throw 'Square root of negative numbers is not supported';
n1=0n;n2=n;
while(n2*n2>n) n2=n2/1000n;
n2=n2*1000n;
nc=(n1+n2)/2n;
while(true) {
nkv=nc*nc;
if(nkv == n) return nc;
if(nkv>n) n2=nc; else n1=nc;
if((n2-n1) <= 1) break;
nc=(n2+n1)/2n;
}
while(nc*nc < n) nc++;
while(nc*nc > n) nc--;
return nc;
}