Prolog 如何检查数字是否为偶数?

Prolog 如何检查数字是否为偶数?,prolog,Prolog,我有一个检查偶数的谓词。但是,当我执行查询时,它总是返回false。我不熟悉prolog,我对这种行为感到很困惑 Even(N):- N mod 2 = 0. 更新: 如果我将其更改为偶数(N):-0是N模2。,则它可以工作。为什么会出现这种情况?您没有使用正确的运算符,并且有一些打字错误!首先,谓词的名称以小写字母开头(偶数,而不是偶数)。相等比较的运算符是=:=(您使用的是用于统一的=!而是,用于将值应用于变量。虽然您正确的意思是,对于偶数,0是0,在这里可以工作,但在某些情况下会失败。

我有一个检查偶数的谓词。但是,当我执行查询时,它总是返回false。我不熟悉prolog,我对这种行为感到很困惑

Even(N):- N mod 2 = 0. 
更新:
如果我将其更改为偶数(N):-0是N模2。,则它可以工作。为什么会出现这种情况?

您没有使用正确的运算符,并且有一些打字错误!首先,谓词的名称以小写字母开头(
偶数
,而不是
偶数
)。相等比较的运算符是
=:=
(您使用的是用于统一的
=
!而
,用于将值应用于变量。虽然您正确的意思是,对于偶数,0是0,在这里可以工作,但在某些情况下会失败。请参阅以了解更多信息。)

even(N):- mod(N,2) =:= 0.