Модульные уравнения в Haskell

Я хочу решить линейные и квадратичные модульные уравнения в Haskell в одной переменной. То, как я делаю это прямо сейчас, - это положить x = [1..] в уравнении один за другим и найти остаток (expr `rem` p == 0, если уравнение по модулю p (не обязательно главным), где expr имеет переменную x). Я считаю, что это очень неэффективный процесс. Есть ли лучший способ сделать это?

1 ответов


решение модульных квадратичных уравнений включает в себя объединение:

для Хаскелла arithmoi пакет имеет реализации этих алгоритмов. В частности, см. chineseRemainder, sqrtModP и sqrtModPP функции.

здесь вы можете найти некоторые примеры:

http://www.mersennewiki.org/index.php/Modular_Square_Root