Определение того, является ли данное число простое число в haskell

Итак, я разработал следующую функцию для проверки того, является ли данное число простым в Haskell (это предполагает, что первое простое число равно 2):

isPrime k = length [ x | x <- [2..k], k `mod` x == 0] == 1

он имеет очевидную ловушку продолжения вычисления, даже если оно делится на несколько чисел :(. Есть ли какой-либо разумный способ «сократить» оценку, когда оно находит более одного решения, используя понимание списков?

Также, какие другие реализации вы бы попробовали? I ' Я не ищу здесь производительности, я просто пытаюсь понять, есть ли другие, более "хешрейтные" способы сделать то же самое.

11
задан Will Ness 26 July 2019 в 21:07
поделиться