Sign in Join
Wiki copytemporary

Greatest common divisor/ru: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
1-Наибольшим общим делителем (**НОД**) двух целых чисел является наибольшее целое число, на которое делятся оба данных числа. Для чисел 121 и 143 наибольшим общим делителем является число 11.
1+Наибольшим общим делителем (**НОД**) двух целых чисел является наибольшее целое число, на которое делятся оба данных числа. Для чисел 121 и 143 наибольшим общим делителем является число 11.
22
3-Существует множество методов вычисления **НОД**. Например, алгоритм Евклида, основанный на делении:
3+Существует множество методов вычисления **НОД**. Например, алгоритм Евклида, основанный на делении:
44
55## Функция greatestCommonDivisor
6-
7-``` pascal
6+```
87function greatestCommonDivisor(a, b: Int64): Int64;
9-var
10- temp: Int64;
11-begin
12- while b <> 0 do
13- begin
14- temp := b;
15- b := a mod b;
16- a := temp
17- end;
18- result := a
19-end;
20-
21-// алгоритм, основанный на вычитании
22-function greatestCommonDivisor_euclidsSubtractionMethod(a, b: Int64): Int64;
23-begin
24- // работает только с положительными целыми числами
25- if (a < 0) then a := -a;
26- if (b < 0) then b := -b;
27- // без входа в цикл, так как вычитание нуля не приведет к выходу из цикла
28- if (a = 0) then exit(b);
29- if (b = 0) then exit(a);
30- while not (a = b) do
31- begin
32- if (a > b) then
33- a := a - b
34- else
35- b := b - a;
36- end;
37- result := a;
38-end;
8+ var
9+ temp: Int64;
10+ begin
11+ while b <> 0 do
12+ begin
13+ temp := b;
14+ b := a mod b;
15+ a := temp
16+ end;
17+ result := a
18+ end;
19+
20+ // алгоритм, основанный на вычитании
21+ function greatestCommonDivisor_euclidsSubtractionMethod(a, b: Int64): Int64;
22+ begin
23+ // работает только с положительными целыми числами
24+ if (a < 0) then a := -a;
25+ if (b < 0) then b := -b;
26+ // без входа в цикл, так как вычитание нуля не приведет к выходу из цикла
27+ if (a = 0) then exit(b);
28+ if (b = 0) then exit(a);
29+ while not (a = b) do
30+ begin
31+ if (a > b) then
32+ a := a - b
33+ else
34+ b := b - a;
35+ end;
36+ result := a;
37+ end;
3938```
4039
4140## См. также
4241
43-- [[Least common multiple/ru|Наименьшее общее кратное]]
44-- [[Mod/ru|Оператор mod]]
45-- mpz_gcd в [[gmp|GMP]] (библиотека высокой точности GNU)
42+ * [[Least common multiple/ru|Наименьшее общее кратное]]
43+ * [Оператор mod](</index.php?title=Mod/ru&action=edit&redlink=1> "Mod/ru \(page does not exist\)")
44+ * mpz_gcd в [[gmp|GMP]] (библиотека высокой точности GNU)
4645
4746## Внешние ссылки
4847
49-- [Пример рекурсивного алгоритма](https://rosettacode.org/wiki/Greatest_common_divisor#Pascal_.2F_Delphi_.2F_Free_Pascal)
48+ * [Пример рекурсивного алгоритма](<https://rosettacode.org/wiki/Greatest_common_divisor#Pascal_.2F_Delphi_.2F_Free_Pascal>)
5049
5150---
52-*From the Free Pascal wiki, page "Greatest common divisor/ru", as it stood on 2018-02-13 after a change by Useroflazarus, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
53-Category: Mathematics/ru
51+*From the Free Pascal wiki, page "Greatest common divisor/ru", as the Internet Archive kept it on 2023-03-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history