Имя: Пароль:
1C
 
Наибольший общий делитель.
0 zyto
 
29.05.08
22:25
Дано: несколько чисел (как целых, так и дробных), нужно найти наибольший общий делитель.
Никто не заморачивался? Мож у кого готовый есть для 8.х?
Или алгоритмик подкиньте плз, а то школа давно была, подзабылось уже...
1 SnarkHunter
 
29.05.08
22:41
Ничего эффективнее алгоритма Евклида не придумали... Кстати, понятие НОД определено только для рациональных чисел, так что надо смотреть что там за дробные у тебя...
2 zyto
 
29.05.08
22:45
Дробные = 0.1, 0,33 и т.д.
Вот накалякал, вроде работает:
   ТЗЧисла.Сортировать("Число");    
   Пока ТЗЧисла.Итог("Число")/ТЗЧисла.Количество()<>ТЗЧисла[0].Число Цикл
       ТекЧисло = ТЗЧИсла[0].Число;
       
       Для Каждого Стр Из ТЗЧисла Цикл
           Если Стр.Число>ТекЧисло Тогда
               Стр.Число = Стр.Число-ТекЧисло;
           КонецЕсли;            
       КонецЦикла;    
       
       ТЗЧисла.Сортировать("Число");
   КонецЦикла;    
   
   Сообщить("НОД = "+СокрЛП(ТЗЧисла[0].Число));

ТЗЧисла - это таблица значений с колонкой Число, соответственно с типом число.