RosettaCodeData/Task/Primality-by-trial-division/Prolog/primality-by-trial-division.pro
2023-07-01 13:44:08 -04:00

7 lines
225 B
Prolog

prime(2).
prime(N) :-
between(3, inf, N),
1 is N mod 2, % odd
M is floor(sqrt(N+1)), % round-off paranoia
Max is (M-1) // 2, % integer division
forall( between(1, Max, I), N mod (2*I+1) > 0 ).