我有一个程序,如果一个整数是素数,则返回true,否则返回false。
但是我使用了内置谓词'\ +',但事实证明我不允许使用它,我怎么能不使用它呢?
is_prime(2).
is_prime(3).
is_prime(P) :- P > 3, P mod 2 =\= 0, \+ has_factor(P,3).
has_factor(N,L) :- N mod L =:= 0.
has_factor(N,L) :- L * L < N, L2 is L + 2, has_factor(N,L2).
非常感谢任何帮助!
答案 0 :(得分:1)
代码应该是(未经测试的)
...
is_prime(P) :- P > 3, P mod 2 =\= 0, has_factor(P,3), !, fail.
is_prime(P) :- P > 3, P mod 2 =\= 0.