> Я не разобрался, как это сделать, подскажите.
В верхнее поле вводите W, в нижнее - s, и нажимаете кнопку "Вычислить".
Ниже выйдет куча результатов, очень детально, буквально по пунктам вашего алгоритма...
До Q включительно (первые 4 строчки) результат общий.
Дальше идёт ветвление, т.к. Q на 3 сомножителя разбивается множеством способов...
Т.е. у каждого параметра там уже много значений...
Введите для пробы W=40, s=2 как в приведённом вами прежде
примере, и сравните результаты. Взятую вами 3-ку a,b,c (16,19,84) вы найдёте в целой куче таких троек... Она там почти в конце (10-я от конца)...
____________________________
> Владимир, я хотел добавить на шаге разбиения числа Q на три сомножителя отбраковку вариантов, в которых из трёх решений кубического уравнения действительный корень только один.
В этом есть смысл, если отбраковка идёт В САМОМ ПРОЦЕССЕ поиска 3-х сомножителей.
Т.к. львиная доля времени уходит именно на разбиение Q.
Алгоритм разбиения Q там сейчас заложен следующий:
1. Берётся число a, равное 2 (начинать с 1 ведь вроде нет смысла).
2. Берётся число b, равное a+1.
3. Делится Q на произведение a*b.
4. Если результат больше b (т.е. выполняется условие a<b<c), то проверяется его целость (если целый, то заносится в массив найденных троек a,b,c). Если нецелый, то b увеличивается на 1 и круг повторяется...
5. Если результат меньше b, то выходим из этого цикла и увеличиваем a на 1. И заново запускаем цикл с новой a.
Если ваше предложение позволит сразу же отбраковывать неверные значения a (не запуская поиск для него b и c), то это сильно бы ускорило процесс.
Или хотя бы аналогично отбраковывать b, без поиска для него значения c.
Отбраковывать уже готовые тройки наверное смысла мало, т.к. на это уходит совсем мало времени...
Львиные затраты времени компьютера идут именно на поиск этих троек a,b,c.
Даже сейчас, при неполном алгоритме, поиск проходит достаточно быстро при W=2000 и s=2.
При W=10000 и s=2, или W=1000 и s=100 я устал ждать результата вычисления... :-)
Потому собственно и ввёл ограничение на длину вводимых изначально W и s в 3 и 2 символа соответственно. БОльшие цифры сервер всё равно неспособен нормально переварить...