Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Craw
235 / 46 / 6
Регистрация: 10.06.2012
Сообщений: 268
Записей в блоге: 1
#1

Алгоритм Евклида - Delphi

03.07.2013, 00:26. Просмотров 959. Ответов 2
Метки нет (Все метки)

С помощью алгоритма Евклида (не расширенного) пытаюсь вычислить НОД:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function NOD(a: integer; n: integer):integer; // âû÷èñëèòü ГЌГЋГ„ Г*ëãîðèòìîì ÅâêëèäГ*
var
   r : array[1..100] of integer; // TO DO: äèГ*Г*ìè÷åñêèé Г¬Г*Г±Г±ГЁГў
                                 // äëÿ Г°Г*öèîГ*Г*ëüГ*îãî èñïîëüçîâГ*Г*ГЁГї ГЇГ*ìÿòè
   i : integer;
begin
   r[1]:=a; r[2]:=n; // îïðåäåëÿåì Г*Г*èáîëüøèé ýëåìåГ*ГІ из параметров
   if a<n then r[2]:=a; r[1]:=n;
 
   result:=1; // инициализация результата
   for i:=3 to 100 do  // Г±Г¬. ïîÿñГ*ГҐГ*ГЁГї âûøå ïðî ìåòîä ÅâêëèäГ*
      r[i] := r[i-2] mod r[i-1];
      if r[i-1] mod r[i] = 0 then
         begin
         result:=r[i];
         Exit;
        end;
 
end;
Всё должно работать, но в 12 строке ошибка - деление на ноль! Никак не могу понять, почему, ведь переменные a и n не равны нулю, как и элементы массива (должны быть).

Не по теме:

Кроме того, нужно создать динамический массив обязательно, чтобы экономить память и работать с большими числами, но уверен, что в поиске найду и не придется задавать вопрос.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2013, 00:26
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Алгоритм Евклида (Delphi):

Алгоритм Евклида
Требуется с помощью процедур и функций решить задачу: Даны натуральные числа а...

Алгоритм Евклида со сдвигом битов
Составить программу вычисляющую НОД двух чисел по алгоритму Евклида. Пусть m&gt;=n...

Необходимо реализовать расширенный алгоритм Евклида
Добрый вечер человеки! Необходимо реализовать расширенный алгоритм...

алгоритм Евклида. Соотношение Безу как сделать?
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes,...

Найти наибольший общий делитель - алгоритм Евклида
Найти наибольший общий делитель - алгоритм Евклида.

Расширенный алгоритм Евклида для вычисления мультипликативного обратного
Расширенный алгоритм Евклида для вычисления мультипликативного обратного.

2
Одиночка
3933 / 1858 / 337
Регистрация: 16.03.2012
Сообщений: 3,869
03.07.2013, 01:10 #2
Вот когда-то делал НОД:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//Вычисление НОД двух чисел
//Алгоритм Эвклида ...
Function NOD(a,b:Integer):Integer;
Begin
  Result:=1;
  Repeat
    If a>b Then
    //Меняем a и b местами, чтобы a было < b
    Begin i:=a; a:=b; b:=i; End;
    Repeat
      b:=b-a;
    Until (b=0) Or (b<a);
    Result:=a;
  Until (b=0);
End; {NOD}
Только зачем тут динамический массив?
1
Craw
235 / 46 / 6
Регистрация: 10.06.2012
Сообщений: 268
Записей в блоге: 1
04.07.2013, 15:43  [ТС] #3
Цитата Сообщение от Одиночка Посмотреть сообщение
Только зачем тут динамический массив?
Есть последовательность a>b>R1>R2>R3>R4>...>Rn же в этом алгоритме Евклида, так вот я хотел сохранить все значения RK в массив (вычислить их), и как только какой-то будет равен 0, возвратить его как НОД. Но не додумался, что можно сделать намного проще, оперируя только двумя переменными, меняя их значения!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2013, 15:43
Привет! Вот еще темы с решениями:

Перевод чисел из одной системы счисления в другую используя алгоритм Евклида.
здравствуйте! можете помоч с кодом? Перевод чисел из одной системы счисления в...

Рекурсивная функция алгоритма Евклида
Доброе утро. Облазил и обмозговал уже что смог на эту тему, ни один вариант не...

Найти наибольший общий делитель двух чисел по алгоритму Евклида
найти наибольший общий делитель двух чисел по алгоритму Евклида ...

Найти наибольший общий делитель с использованием итеративной и рекуррентной реализаций алгоритма Евклида
Найти НОД (наибольший общий делитель) заданных целых положительных чисел a и b...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru