JSFiddle - React, Tailwind, and code Playground

HTML

<p id='pipi'></p>
<!--
http://www.mathpropress.com/stan/bibliography/spigot.pdf
http://habrahabr.ru/post/188700/
-->

JavaScript

var n=+prompt('Сколько знаков числа Пи нужно рассчитать?', 1000)+3;
var len=10*n/3|0;
var q, x, t=nines=predigit=0, a=[], pi=[];
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('pipi').innerHTML=pi.join('');

function w(b) {
  if (t<n-3) pi[pi.length]=b;
  t++;
  if (t==1) pi[pi.length]=".";
  if (t%50==0 && t>0) pi[pi.length]="<br>";
}