prolog中3的奇数倍数
我需要有人能帮助如何做奇数倍的3在序言 定义一个谓词prolog中3的奇数倍数,prolog,Prolog,我需要有人能帮助如何做奇数倍的3在序言 定义一个谓词oddMultOf3/1,该谓词确定整数是否为 三的奇数倍。用户应该能够输入谓词 使用整数,例如,oddMultOf3(42)并计算为true或 错。如果给定的参数不是整数,则谓词应该 显示消息“错误:给定参数不是整数” 他们让我这么做 oddMultOf3(171). true. oddMultOf3(100). false. oddMultOf3(12). false. oddMultOf3(4.2). ERROR: The given p
oddMultOf3/1
,该谓词确定整数是否为
三的奇数倍。用户应该能够输入谓词
使用整数,例如,oddMultOf3(42)
并计算为true或
错。如果给定的参数不是整数,则谓词应该
显示消息“错误:给定参数不是整数”
他们让我这么做
oddMultOf3(171).
true.
oddMultOf3(100).
false.
oddMultOf3(12).
false.
oddMultOf3(4.2).
ERROR: The given parameter is not an integer
oddMultOf3(-9).
true.
但每次我尝试时都会收到错误
这是我的密码
oddMultOf3(N):-Y是N模3,Y=0
据我所知,三的奇数倍数意味着N
是一个整数,N/3
是一个整数,N/3
是奇数(如非偶数)。这意味着如果执行模6,它必须是3
实际上这里有两种情况:
不是整数,在这种情况下,我们会显示错误,也许我们也应该N
失败。因此:
oddMultOf3(N) :- \+ integer(N), !, print("ERROR: The given parameter is not an integer"), fail.
- 否则,我们将检查
是否等于N mod 6
:3
oddMultOf3(N) :- 3 is N mod 6.
oddMultOf3(N) :-
\+ integer(N),
!,
print("ERROR: The given parameter is not an integer"),
fail.
oddMultOf3(N) :-
3 is N mod 6.
然后我们在swi
中获得:
?- oddMultOf3(171).
true.
?- oddMultOf3(100).
false.
?- oddMultOf3(12).
false.
?- oddMultOf3(4.2).
"ERROR: The given parameter is not an integer"
false.
?- oddMultOf3(-9).
true.
这是三的奇数倍吗?
Y是N模3,Y=0
建立了3的倍数。现在,您认为如何确定N
是奇数?只要加上那个条件就行了。@lowerer是的,那么就加上一个条件来检查N mod 2是否为0?因为示例30是3的倍数,这是偶数。非常感谢,但是当我厌倦了你的代码时,它会给我错误的结果,例如:oddMultOf3(171)。必须是真的但在你的密码里给了我false@user8286060:固定。