从1到N生成素数的Prolog代码

从1到N生成素数的Prolog代码,prolog,primes,Prolog,Primes,我一直在尝试做一个Prolog问题来生成从1到N的素数,但它总是用true或false来回答,我找不到错误。 查询示例:GenerateTime(10,X) 我认为您需要建立一个列表: generatePrime( 1 , [] ) :- !. generatePrime( N , X ) :- not( isPrime( N ) ) , !, Z is N-1 , generatePrime( Z , X ) . generatePrime(N, [N | X] ):- Z i

我一直在尝试做一个Prolog问题来生成从1到N的素数,但它总是用true或false来回答,我找不到错误。 查询示例:GenerateTime(10,X)


我认为您需要建立一个列表:

generatePrime( 1 , [] ) :- !.
generatePrime( N , X ) :-
  not( isPrime( N ) ) , !,
  Z is N-1 ,
  generatePrime( Z , X ) .
generatePrime(N, [N | X] ):-
  Z is N-1 ,
  generatePrime( Z , X ) .

我没有测试它,但类似的东西应该可以工作。

你可以发布一个你尝试过的查询和得到的结果的示例吗?@Shevliaskovic该查询是GenerateTime(10,X)。请注意,1不是质数。这工作很好,谢谢你的支持。然而,我希望输出是这样的X=7x=5x=3x=2
generatePrime( 1 , [] ) :- !.
generatePrime( N , X ) :-
  not( isPrime( N ) ) , !,
  Z is N-1 ,
  generatePrime( Z , X ) .
generatePrime(N, [N | X] ):-
  Z is N-1 ,
  generatePrime( Z , X ) .