На сайте - ты пишешь целые значения, а не дробные. Типа long.
Вон, выше я написал функцию для двух значений. Если значений много - надо найти НОК первых двух, потом НОК полученного значения и третьего элемента, потом - НОК полученного значения и четвертого элемента, и так далее.
Если значений много - надо найти НОК первых двух, потом НОК полученного значения и третьего элемента, потом - НОК полученного значения и четвертого элемента, и так далее.
2019.06.1500:19:22.206 LCM (.BrentCrud,M1) Наименьшее общее кратное массива из 1000 элементов = 3710369067405, Нахождение НОК из 1000 элементов выполнено за 118 микросекунд
2019.06.1500:19:22.206 LCM (.BrentCrud,M1) Наименьшее общее кратное 100000,100000,12500,50000,27051,24893,26673 = 598702640781300000
Кстати, рекомендую в данной функции работать именно с беззнаковыми значениями - это позволит избежать потенциальных ошибок.
Вобще, на мой взгляд, везде, где не предполагается отрицательных величин - в обязательном порядке надо использовать именно беззнаковые. А там, где в функцию требуется передать знаковое - делать прямое преобразование (предварительно проверив, что пришедшее беззнаковое значение не превышает допустимого, да и внутри любой функции необходимо всегда делать ASSERT'ы на допустимость пришедших значений).
Считаю на сайте выдаёт следущий результат
На сайте - ты пишешь целые значения, а не дробные. Типа long.
Вон, выше я написал функцию для двух значений. Если значений много - надо найти НОК первых двух, потом НОК полученного значения и третьего элемента, потом - НОК полученного значения и четвертого элемента, и так далее.
Нужно найти НОК , а не НОД
Ты весь код поглядел ? Функция НОК - использует НОД.
Тебе нужна функция _LeastCommonMultiple(). Она использует функцию _GreaterCommonDivisor()Georgiy Merts:
Если значений много - надо найти НОК первых двух, потом НОК полученного значения и третьего элемента, потом - НОК полученного значения и четвертого элемента, и так далее.
Так и делаю. Числа использую целые.
Тебе нужна функция _LeastCommonMultiple(). Она использует функцию _GreaterCommonDivisor()Мне нужно для mql4 . Чтобы на входе был массив с числами, а на выходе НОК.
Так и делаю. Числа использую целые.
Ну так в чем проблема ? Все украдено придумано до нас.
Мне нужно для mql4 . Чтобы на входе был массив с числами, а на выходе НОК.
Я тебе дал код на MQL. Для двух значений. Тебе осталось подставить все числа массива.
Ну, друзья даете...
Простейшая же функция !
Функция _GreaterCommonDivisor (cо служебными) :
Да, пожалуй, это самый оптимальный вариант.
Мне нужно для mql4 . Чтобы на входе был массив с числами, а на выходе НОК.
код скрипта кроссплатформенный
Кстати, рекомендую в данной функции работать именно с беззнаковыми значениями - это позволит избежать потенциальных ошибок.
Вобще, на мой взгляд, везде, где не предполагается отрицательных величин - в обязательном порядке надо использовать именно беззнаковые. А там, где в функцию требуется передать знаковое - делать прямое преобразование (предварительно проверив, что пришедшее беззнаковое значение не превышает допустимого, да и внутри любой функции необходимо всегда делать ASSERT'ы на допустимость пришедших значений).
код скрипта кроссплатформенный
Спасибо! Быстро работает.
У меня код считал секунды 3 - 5.