RosettaCodeData/Task/Pi/Yabasic/pi.basic

63 lines
1.0 KiB
Plaintext

n = 1000
long = 10 * int(n / 4)
needdecimal = 1 //true
dim a(long)
nines = 0
predigit = 0 // {First predigit is a 0}
for j = 1 to long
a(j-1) = 2 // {Start with 2s}
next j
for j = 1 to n
q = 0
for i = long to 1 step -1
// {Work backwards}
x = 10*a(i-1) + q*i
a(i-1) = mod(x, (2*i - 1))
q = int(x / (2*i - 1))
next i
a(0) = mod(q, 10)
q = int(q / 10)
if q = 9 then
nines = nines + 1
else
if q = 10 then
d = predigit+1
gosub outputd
if nines > 0 then
for k = 1 to nines
d = 0
gosub outputd
next k
end if
predigit = 0
nines = 0
else
d = predigit
gosub outputd
predigit = q
if nines <> 0 then
for k = 1 to nines
d = 9
gosub outputd
next k
nines = 0
end if
end if
end if
next j
print predigit
end
label outputd
if needdecimal then
if d = 0 then return : fi
print d;
print ".";
needdecimal = 0 //false
else
print "", d;
endif
return