Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Число Пи

Автор: -Орхидея- 20.01.2007 20:19

В принципе как может показаться программка нетрудная. Но я наверное не обладаю знаниями такими чтобы написать её. Смысл програмки такой: Найти 100 первых правильных знаков числа Пи, и желательно чтобы программа была маленькая, и понятная, без сложностей.
Кому интересно пожалуста помогите.
Заранее спасибо.
P.S.:И пожалуста не пишите проги которые вычисляют 1000 и более цифр числа Пи, мне просто позарез нужна прога маленькая несложная.

Автор: klem4 20.01.2007 21:45

http://forum.pascal.net.ru/index.php?showtopic=12884

Поиск и еще раз поиск

Дубликат ? http://forum.pascal.net.ru/index.php?showtopic=12884&hl=

Автор: -=Орхидея=- 21.01.2007 0:39

Да нет та тема тоже моя но та прога очень сложная и непонятная
если бы кто объяснил её алгоритм то другое дело

Автор: мисс_граффити 21.01.2007 0:59

http://forum.pascal.net.ru/index.php?showtopic=2428
http://ru.wikipedia.org/wiki/Пи#.D0.A1.D0.BF.D0.BE.D1.81.D0.BE.D0.B1.D1.8B_.D0.B2.D1.8B.D1.87.D0.B8.D1.81.D0.BB.D0.B5.D0.BD.D0.B8.D1.8F

Автор: volvo 23.01.2007 18:38

Интересная информация: самая короткая рабочая программа, вычисляющая 800 знаков числа Пи:

int a=10000,b,c=2800,d,e,f[2801],g;main(){for(;b-c;)f[b++]=a/5;
for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)for(b=c;d+=f[b]*a, f[b]=d%--g,d/=g--,--b;d*=b);}


Вот ее перевод на Паскаль (естественно, она уже не столь маленькая, но рабочая по-прежнему):
const
a = 10000;
c: longint = 2800;
var
b, d, e, g: longint;
f: array[0 .. 2800] of longint;

begin

while b - c <> 0 do begin
f[b] := a div 5; inc(b);
end;
while true do begin
d := 0; g := 2 * c;
if g = 0 then break;

b := c;
while true do begin
inc(d, f[b] * a);
dec(g); f[b] := d mod g;
d := d div g; dec(g);
dec(b);
if b = 0 then break;
d := d * b;
end;

dec(c, 14);
write(e + d div a);
e := d mod a;
end;

end.
rolleyes.gif

Автор: Malice 23.01.2007 19:43

Цитата(volvo @ 23.01.2007 14:38) *

Интересная информация: самая короткая рабочая программа, вычисляющая 800 знаков числа Пи:

Ага, тоже 2 часа назад на нее наткнулся, начал перекладывать и плюнул smile.gif Попытался упростить твою:

const
a = 10000;
var
c,b, d, e: longint;
f: array[0 .. 2800] of longint;
begin
writeln;
for b:=0 to 2800 do f[b] := 2000;
for c:=200 downto 1 do begin
d := 0;
for b:=c*14 downto 1 do begin
d := d * b;
inc(d, f[b] * a);
f[b] := d mod (b*2-1);
d := d div (b*2-1);
end;
write(e + d div a);
e := d mod a;
end;
end.

Один фиг, не поймеш на чем основано. Шайтаны smile.gif