Sign in Join
Wiki copytemporary

Greatest common divisor/ru: what changed

Revision 2 to 3. 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-```
6+
7+``` pascal
78function greatestCommonDivisor(a, b: Int64): Int64;
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;
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;
3839```
3940
4041## См. также
4142
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)
43+- [[Least common multiple/ru|Наименьшее общее кратное]]
44+- [[Mod/ru|Оператор mod]]
45+- mpz_gcd в [[gmp|GMP]] (библиотека высокой точности GNU)
4546
4647## Внешние ссылки
4748
48- * [Пример рекурсивного алгоритма](<https://rosettacode.org/wiki/Greatest_common_divisor#Pascal_.2F_Delphi_.2F_Free_Pascal>)
49+- [Пример рекурсивного алгоритма](https://rosettacode.org/wiki/Greatest_common_divisor#Pascal_.2F_Delphi_.2F_Free_Pascal)
4950
5051---
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).*
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

Back to history