Немного о полученном коде.
Так как из реализации на C++ можно узнать, что ответ 2107 - очевидно, ответ не помещается в 2 байта, поэтому будет хранить его в двух регистрах: R1 и R2, соответственно старшие и младшие байты.Сначала делим текущее значение числа k на 7 (команда DIV AB), если остаток нулевой, добавляем к младшим байтам текущее число и при наличии бита переноса увеличиваем старшие байты.После этого проверяем, не равно ли текущее значение двумстам, если это так - завершаем программу, иначе увеличиваем это значение и возвращаемся в начало "цикла".В приложении смотри:
непосредственно код программы на Ассемблере (37783247.asm.txt),скриншот кода на Ассемблере и значения, хранящиеся в регистрах в результате выполнения,соответствующий код на плюсах и результат выполнения,на засыпку, результат конвертации числа 2107 из десятичной в 16-чную систему :)
Как я понимаю, это PascalABC.NET
Функция ArrRandom(n, a, b) возвращает массив целых чисел из n элементов, сгеренированный случайным образом в диапазоне от a до b включительно
.println() - вывод значения в консоль
z[4::5] - вернёт срез массива z, начиная с 4го индекса с шагом 5.
Метод Aggregate применяет агрегатную функцию к последовательности.
Агрегатная функция - функция, выполняющая вычисление на наборе значений, и возвращающая какое либо одно значение.
В Вашем случае - для массива z вызывается метод Aggregate, в котором исходным значением вычислений является BigInteger.One (целое число 1, имеющее тип BigInteger - бесконечно больше целое), в это же время являющееся промежуточным значением, которое каждый раз умножается на значение следующего элемента последовательности.
Грубо говоря, Z[4::5].Aggreage(BigInteger.One, (p, x) -> p*x) Вернёт произведение каждого пятого элемента массива Z, начиная с 4го индекса.