gpt4 book ai didi

prolog - Prolog 中\+ 的替代品?

转载 作者:行者123 更新时间:2023-12-02 09:03:36 29 4
gpt4 key购买 nike

我有一个程序,如果整数是素数,则返回 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).

任何帮助将不胜感激!

最佳答案

Prolog 中的 not/1 是通过组合 cut-fail 来实现的(所谓的 NAF - negation by failure )。

代码应该是(未经测试)

...
is_prime(P) :- P > 3, P mod 2 =\= 0, has_factor(P,3), !, fail.
is_prime(P) :- P > 3, P mod 2 =\= 0.

关于prolog - Prolog 中\+ 的替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22512726/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com