Just another update
This commit is contained in:
parent
a25938f123
commit
00a190b0a6
6591 changed files with 94363 additions and 23227 deletions
|
|
@ -1,27 +1,40 @@
|
|||
Program Pi_Spigot;
|
||||
|
||||
const
|
||||
n = 1000;
|
||||
len = 10*n div 3;
|
||||
|
||||
var
|
||||
i, j, k, q, x, nines, predigit: integer;
|
||||
a: array[1..len] of longint;
|
||||
j, k, q, nines, predigit: integer;
|
||||
a: array[0..len] of longint;
|
||||
|
||||
function OneLoop(i:integer):integer;
|
||||
var
|
||||
x: integer;
|
||||
begin
|
||||
{Only calculate as far as needed }
|
||||
{+16 for security digits ~5 decimals}
|
||||
i := i*10 div 3+16;
|
||||
IF i > len then
|
||||
i := len;
|
||||
result := 0;
|
||||
repeat {Work backwards}
|
||||
x := 10*a[i] + result*i;
|
||||
result := x div (2*i - 1);
|
||||
a[i] := x - result*(2*i - 1);//x mod (2*i - 1)
|
||||
dec(i);
|
||||
until i<= 0 ;
|
||||
end;
|
||||
|
||||
begin
|
||||
|
||||
for j := 1 to len do
|
||||
a[j] := 2; {Start with 2s}
|
||||
nines := 0;
|
||||
predigit := 0; {First predigit is a 0}
|
||||
|
||||
for j := 1 to n do
|
||||
begin
|
||||
q := 0;
|
||||
for i := len downto 1 do {Work backwards}
|
||||
begin
|
||||
x := 10*a[i] + q*i;
|
||||
a[i] := x mod (2*i - 1);
|
||||
q := x div (2*i - 1);
|
||||
end;
|
||||
q := OneLoop(n-j);
|
||||
a[1] := q mod 10;
|
||||
q := q div 10;
|
||||
if q = 9 then
|
||||
|
|
@ -29,22 +42,22 @@ begin
|
|||
else
|
||||
if q = 10 then
|
||||
begin
|
||||
write(predigit+1);
|
||||
for k := 1 to nines do
|
||||
write(0); {zeros}
|
||||
predigit := 0;
|
||||
nines := 0
|
||||
write(predigit+1);
|
||||
for k := 1 to nines do
|
||||
write(0); {zeros}
|
||||
predigit := 0;
|
||||
nines := 0
|
||||
end
|
||||
else
|
||||
begin
|
||||
write(predigit);
|
||||
predigit := q;
|
||||
if nines <> 0 then
|
||||
begin
|
||||
for k := 1 to nines do
|
||||
write(9);
|
||||
nines := 0
|
||||
end
|
||||
write(predigit);
|
||||
predigit := q;
|
||||
if nines <> 0 then
|
||||
begin
|
||||
for k := 1 to nines do
|
||||
write(9);
|
||||
nines := 0
|
||||
end
|
||||
end
|
||||
end;
|
||||
writeln(predigit);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue