- Сообщения
- 15
- Репутация
- 1
AutoIt: 3.3.14.2
Версия: 1.0
Категория: Математика
Описание: Функция для вычисления наибольшего общего делителя между двумя целыми числами.
В примере три варианта функции. Рекурсивная, обычная, и компактная с использованием Ternary операторов.
Возможное применение: Вычисление соотношения сторон экрана монитора или изображений.
Код/Пример:
Дополнительно:
История версий:
Источник: autoit-script.ru
Автор(ы): Diamond
Версия: 1.0
Категория: Математика
Описание: Функция для вычисления наибольшего общего делителя между двумя целыми числами.
В примере три варианта функции. Рекурсивная, обычная, и компактная с использованием Ternary операторов.
Возможное применение: Вычисление соотношения сторон экрана монитора или изображений.
Код/Пример:
Код:
Global $iW = @DesktopWidth
Global $iH = @DesktopHeight
Global $iDiv = _Nod3($iW, $iH)
MsgBox(0, "Наибольший общий делитель: " & $iDiv, "Соотношение сторон для текущего разрешения экрана:" & @LF & $iW / $iDiv & ' x ' & $iH / $iDiv)
; #FUNCTION# =====================================================================================================================
; Имя..................: _Nod
; Описание ............: Функция вычисляет наибольший общий делитель.
; Синтаксис............: _Nod($a, $b)
; Параметры ...........: $a, $b - Делимое (int)
; Возвращаемое значение: Наибольший общий делитель
; Автор ...............: Diamond
; Изменено.............:
; Замечания ...........: Используется Рекурсия
; См. также ...........:
; Ссылка ..............;
; Пример ..............;
;================================================================================================================================
Func _Nod($a, $b)
$a = Mod($a, $b)
If $a = 0 Then
Return $b
Else
Return _Nod($b, $a)
EndIf
EndFunc ;==>_Nod
; #FUNCTION# =====================================================================================================================
; Имя..................: _Nod2
; Описание ............: Функция вычисляет наибольший общий делитель.
; Синтаксис............: _Nod2($a, $b)
; Параметры ...........: $a, $b - Делимое (int)
; Возвращаемое значение: Наибольший общий делитель
; Автор ...............: Diamond
; Изменено.............:
; Замечания ...........: Нет
; См. также ...........:
; Ссылка ..............;
; Пример ..............:
;================================================================================================================================
Func _Nod2($a, $b)
Local $iTmp
While $a <> 0 And $b <> 0
$iTmp = $a
$a = Mod($a, $b)
$b = Mod($b, $iTmp)
WEnd
Return $a + $b
EndFunc ;==>_Nod2
; #FUNCTION# ;=====================================================================================================================
; Имя..................: _Nod3
; Описание ............: Функция вычисляет наибольший общий делитель.
; Синтаксис............: _Nod3($a, $b)
; Параметры ...........: $a, $b - Делимое (int)
; Возвращаемое значение: Наибольший общий делитель
; Автор ...............: Diamond
; Изменено.............:
; Замечания ...........: Используются Ternary операторы
; См. также ...........:
; Ссылка ..............;
; Пример ..............:
;================================================================================================================================
Func _Nod3($a, $b)
While $a And $b
Execute($a>$b?Assign('a', Mod($a, $b)):Assign('b', Mod($b, $a)))
WEnd
Return $a + $b
EndFunc ;==>_Nod3
Дополнительно:
В качестве дополнительного примера, Утилита - Калькулятор, которая основана на этой функции.
Выводит список всевозможных разрешений в соответствии с заданными параметрами.
Если Вам часто приходиться обрезать изображения в графическом редакторе но при этом важно сохранить пропорции.
Или нужно вывести список разрешений которые соответствуют условиям кратности (актуально для некоторых видео-кодеков). Эта утилита может стать неплохой шпаргалкой.
Выводит список всевозможных разрешений в соответствии с заданными параметрами.
Если Вам часто приходиться обрезать изображения в графическом редакторе но при этом важно сохранить пропорции.
Или нужно вывести список разрешений которые соответствуют условиям кратности (актуально для некоторых видео-кодеков). Эта утилита может стать неплохой шпаргалкой.
История версий:
1.0
Источник: autoit-script.ru
Автор(ы): Diamond