А каков алгоритм таких проверок? Я бы на Julia сделал...
На самом деле асм тут и не нужен, он лишь ускоряет перебор когда нужно перебрать больше десятка-сотни тысяч чисел в какой-то позиции. Плюс пока у меня ограничение в нём на знаменатель (
ради простоты кода), потому большие знаменатели обрабатываются на PARI и медленно.
А сам алгоритм прост: ограничение глубины рекурсии до 4 (для поиска решений длиной 5). Если решения не найдено, значит
больше проверенного значения.
Плюс для ускорения нахождения решений с небольшими числами я ограничиваю верхний порог проверяемых чисел на самом глубоком уровне рекурсии и только если с таким условием решения не найдено, то запускаю второй (иногда и третий и четвёртый) раз уже только для непроверенного диапазона чисел (проход рекурсивного дерева без реальной проверки очень быстр).
-- 16.07.2023, 14:02 --Кстати hint: если проверяем и
и
(
- дробная часть), то выгоднее сначала проверить максимальное из них - потому что в нём почти 100% будет первое значение
и соответственно перебор остальных станет короче на одну позицию, что резко его ускорит, а перебор всех других значений в первой позиции выполняется вообще за секунды.
И ещё hint: на каждом уровне рекурсии выгоднее перебирать от больших знаменателей к меньшим — при этом следующему уровню остаётся число больше и длина перебора будет меньше. Если решения нет, то без разницы с какой стороны перебирать одинаковый объём вычислений, зато если решение есть и оно с достаточно малыми числами, то будет найдено быстрее/раньше. Тут могут быть исключения, вон много решений выше имеют наоборот минимальные числа в первых позициях, но всё же имеет смысл.
-- 16.07.2023, 14:12 --dennyЯ Вас поздравляю — все ранее поставленные задачи выполнены: и
посчитаны, и первая 6-ка найдена:
n=40=2078178381193813/485721041551200: 135294214989013/485721041551200=[6, 10, 87, 2618, 6737367, 232301367698400], len=6