【发布时间】:2014-06-05 02:38:52
【问题描述】:
所以我试图仅使用一个谓词来确定一个数字是否为素数。我真的不明白为什么这里的每个数字都被声明为假。
is_prime(2).
is_prime(X) :-
X > 2, %0 and 1 aren't primes, 2 is dealt with above
1 is mod(X,2), %number is odd
N is floor(X/2), %I want to only divide X from 1 to X/2
forall( between(1,N,Z), mod(X,Z) > 0 ). %This should do X mod 1:X/2
【问题讨论】:
-
我相信正确的解决方法是将 forall 中的 1 更改为 2。这似乎已经做到了。
-
我建议您将其作为答案提交并接受,如果可行的话。
-
我会尽快。但是对此发表评论的人之一也提交了答案。我打算切换他的评论以获得答案。
-
我写了一个答案(使用 1 作为起始值是不正确的)但意识到你已经自己发现了它,因此删除了我的答案。我应该取消删除它吗?
标签: prolog primes primality-test