JSFiddle - React, Tailwind, and code Playground
JavaScript
var n=+prompt('Сколько знаков числа Пи нужно рассчитать?', 1000)+3;
var pi=[], len=10*n/3|0;
var q, x, t=nines=predigit=0, a=[];
for (var i=0; i<len; i++) a[i]=2;
for (var j=0; j<n; j++) {
q=0;
for (var i=len-1; i>=0; i--) {
x=10*a[i]+q*(i+1);
a[i]=x%(2*i+1);
q=x/(2*i+1)|0;
}
a[0]=q%10;
q=q/10|0;
if (q==9) nines++;
else if (q==10) {
w(predigit+1);
for (var i=0; i<nines; i++) w(0);
predigit=0;
nines=0;
}
else {
if (j>0) w(predigit);
predigit=q;
if (nines!=0) {
for (var i=0; i<nines; i++) w(9);
nines=0;
}
}
}
w(predigit);
document.getElementById('pi').innerHTML=pi.join('');
function w(b) {
if (t<n-3) pi.push(b);
t++;
if (t==1) pi.push(".");
if (t%100==0 && t>0) pi.push("<br>");
}