Главная страница  Алгоритмы 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [ 29 ] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57]

между ними для вычисления гамма-функции должен латься по скорости их выполнения. Алгоритмы 80 и 22l требуют фактически одинаковое время выполнения. Ощ в два раза быстрее алгоритма 291 при х=\, но это пре, имущество неуклонно убывает по мере возрастания х так что при х<7 их скорости примерно равны, а затбм начиная с этой точки, алгоритм 291 становится быстрее-примерно в три раза при л;<=25 и примерно в д, сять раз при л:=78. Этот хронометраж включает время потенцирования log gamma.

Во многих случаях требуется вычисление отношений гамма-функций (например, биномиальные коэффициенты, отношения неполных бета-функций). Использование алгоритма 291 для этой цели обеспечивает вычисление без переполнения для гораздо больших значений аргумента.

АЛГОРИТМ 356

Решето Эратосфена для нахождения простых чисел [А1]

Процедура sieve (т. е. решето) использует алгоритм, известный под названием «Решето Эратосфена», для иа-хождения всех простых чисел :(включая единицу), не превосходящих данного п, и запоминает их в 1массиве р,

длина которого не больше чем entier (--\- если п!<200 (см. работу Р. Троста [39, с. 64]), или не более чем entier --2 + лля п>200 [39, с. 72].

procedure sieve(п) result: (р);

value п; integer n; integer array p; begin integer i,j,k; real s;

p[l]:=l;p[2]: = 2;

p[3]:=j:=3;

for k: = 3 step 2 until n do begin i: = 2; s: = sqrt (k); start: i: = i+l;

if p{i]>s then begin pO]:=k; j:==j + l end else



if (k-r-p[i])Xp[i]:?k Шеп go to start end к

end sieve;

Свидетельство к алгоритму 356

Алгоритм 356 получен из алгоритма 35а путем следующей модификации.

1. В теле процедуры было добавлено описание real s;

2. Начало соста!Вного оператора begin i:=2; было за-.менено на begin i:=2; s:=sqrt{k);

3 Условие if p[i]>sqrt(k) then было заменено на if jp[i]>s then.

Эти модификации были сделаны с целью ускорения выполнения процедуры. Кроме того, была исправлена формула определения верхней границы массива р, приведенная ранее как е пояснительном тексте, так к в «Свидетельстве к алгоритму 35а».

Алгоритм 356 был успешно цранслирован для П:=100 на машине БЭСМ-6 в системе БЭСМ-АЛГОЛ.

Для отыскания простых чисел можно пользоваться также и более совершенными, хотя и более сложными алгоритмами 310 и 311.

Необходимость замены формулы entier (2п/1пп), приведенной в исходном алгоритме 35 («САСМ», 1961, № 3), более точными формулами видна уже из нижеследующей таблицы, дающей сравнение результатов вычисления верхней границы массива р различными способами.

Количество простых чисел

100 .200 1000

26 47 169

43 75 289

35 61 231

39 61 201

Еще более точное приближение для верхней гра,ницы Массива р можно получить по интегральной формуле Чебыщева [40]

Ж/г) = 1.04...+

Которая для п=100 дает р=30, а для п=1000 дает Р=179. Но эта формула гораздо более сложна.



АЛГОРИТМ 366

Вычисление таблицы значений полинома Чебышева [S22]

Процедура tchebycheff по дайной последовательности значений a:,(i = 0, 1,..., m), записанных в одномерном массиве х, строит таблицу Th{Xi)(k=Q, 1,...,п) и запоминает ее в двумерном массиве t, в котором значению Th(xi) соответствуют t[k, i]. procedure tchebycheff (x,m,n) result: (t);

value m,n; integer m,n; array x,t; begin integer i,k;

for i:= О step 1 until m do begin t[0,i]: = 1; t[l,i]:=xli]; . •

for k: = 2 step 1 until n do t[k,i]: =2Xx[i]Xt[k-l,i]-t[k-2,i] end i end tchebycheff;

Свидетельство к алгоритму 366

Алгоритм 366 является стереотипным переизданием алгоритма 36а.

Свидетельство к алгоритму 36а

Алгоритм 36а получен в результате сокращений и ординарной переработки алгоритма 36 (Gianni А. J-«САСМ», 1961, № 3). Алгоритм проверен в системе ТА-1. Для первых пяти полиномов Чебышева при ука-

* Дальнейший текст «Свидетельства к алгоритму 35а» здесь не приводится, потому что этот текст исправлен и заменен текстом нового «Свидетельства к алгоритму.356». {Прим. ред.)

Алгоритм 35а получен .в результате исправления, со-кращения и ординарной переработки алгоритма 35 (Wood Т. С. «САСМ», 1961, №3).

С помощью транслятора были получены .простые числа.для п= ЮО и для п= 1000... *.




[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [ 29 ] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57]

0.0106