Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.04.2010, 20:36
Аватар для Лунтик-Некрофил
Лунтик-Некрофил Лунтик-Некрофил вне форума
Начинающий
 
Регистрация: 28.09.2009
Сообщения: 165
Репутация: 12
По умолчанию Задумался...

Писал прогу, застрял на одном моменте - надо найти максимальный общий делитель для двух чисел. Сначала показалось элементарно, потом понял что нифига не знаю. Пытался выяснить через div, но как я сразу же понял буль он не возвращает. Есть ли в стандартной библиотеке подобные функции? Или проверка на принадлежность типу?
__________________
Алкоголик-аморал, явная угроза обществу
Блин, я уже местный, а все равно нифига не знаю...
Ответить с цитированием
  #2  
Старый 27.04.2010, 22:07
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, можно порыть алгоритм в инете.
С другой стороны, могу подсказать некоторую эвристику.

1. НОД не может быть больше меньшего числа.
2. Нужно сравнивать отстатки от деления (д.б. = 0).

Код:
function FindNOD(A, B : Integer) : Integer;
begin
  Result := Min(A,B);
  While Result > 1 Do
      If ((A mod result) = 0) And ((B mod result) = 0)
         Then Break
         Else Dec(Result);
end;

PS. Для данного кода входные значения д.б. положительные. Для отрицательных поправь вычисление стартового числа (в Min числа взять Abs).
Ответить с цитированием
  #3  
Старый 27.04.2010, 22:48
beavi5 beavi5 вне форума
Прохожий
 
Регистрация: 13.04.2010
Сообщения: 49
Репутация: 12
По умолчанию

наибольший общий делитель

Код:
readln(a,b);
while a<>b do
if a>b then
a:=a-b
else
b:=b-a;
writeln(a);
__________________
Истина где-то рядом...
Ответить с цитированием
  #4  
Старый 27.04.2010, 23:50
Ama Ama вне форума
Активный
 
Регистрация: 15.07.2008
Сообщения: 260
Репутация: 23
По умолчанию

Ну НАИБОЛЬШИЙ общий делитель равен произведению этих чисел. А если ты прогишь дроби то мож те и воспользоваться произведением
__________________
APPLICATION.TERMINATOR
Ответить с цитированием
  #5  
Старый 28.04.2010, 08:54
beavi5 beavi5 вне форума
Прохожий
 
Регистрация: 13.04.2010
Сообщения: 49
Репутация: 12
По умолчанию

Цитата:
Сообщение от Ama
Ну НАИБОЛЬШИЙ общий делитель равен произведению этих чисел.

произведение этих чисел является наименьшим о6щим делимым.)
__________________
Истина где-то рядом...
Ответить с цитированием
  #6  
Старый 28.04.2010, 08:54
beavi5 beavi5 вне форума
Прохожий
 
Регистрация: 13.04.2010
Сообщения: 49
Репутация: 12
По умолчанию

Цитата:
Сообщение от Ama
Ну НАИБОЛЬШИЙ общий делитель равен произведению этих чисел.

произведение этих чисел является наименьшим о6щим делимым.)
__________________
Истина где-то рядом...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:22.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025