gpt4 book ai didi

Prolog程序检查数字是否为素数

转载 作者:行者123 更新时间:2023-12-03 15:53:25 25 4
gpt4 key购买 nike

我根据素数只能被1和其本身整除的逻辑编写了以下程序。因此,我只是经历了将其除以所有大于一个且小于其自身的数字的过程,但是由于将所有输入的数字都视为真实值,所以我似乎遇到了问题。这是我的代码...

divisible(X,Y) :-
Y < X,
X mod Y is 0,
Y1 is Y+1,
divisible(X,Y1).

isprime(X) :-
integer(X),
X > 1,
\+ divisible(X,2).

提前致谢 :)

最佳答案

我是Prolog的初学者,但设法解决了您的问题。

divisible(X,Y) :- 0 is X mod Y, !.

divisible(X,Y) :- X > Y+1, divisible(X, Y+1).

isPrime(2) :- true,!.
isPrime(X) :- X < 2,!,false.
isPrime(X) :- not(divisible(X, 2)).

主要问题是语句 X mod Y is 0。谓词 is具有两个(左和右)自变量,但left参数必须是常量或在谓词执行时已统一的变量。我只是交换了这些值。其余代码用于检查数字2(是质数)和小于2(不是质数)的数字

我忘了提及比较 Y < X是错误的,因为您想测试2到X-1之间的所有数字,所以比较包括X。

关于Prolog程序检查数字是否为素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23282097/

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