戈德巴赫&x2019;prolog中的s猜想

戈德巴赫&x2019;prolog中的s猜想,prolog,primes,primality-test,goldbach-conjecture,Prolog,Primes,Primality Test,Goldbach Conjecture,哥德巴赫猜想:每一个大于2的正偶数都是两个素数的和。例28(5,23和11,17) 我希望Prolog代码打印如下(所有组合): 我有一个代码可以打印单个组合[5,23],但不能打印下一个组合[11,17] is_prime(2). is_prime(3). is_prime(P) :- integer(P), P > 3, P mod 2 =\= 0, \+ has_factor(P,3). has_factor(N,L) :- N mod L =:= 0. has_factor(

哥德巴赫猜想:每一个大于2的正偶数都是两个素数的和。例28(5,23和11,17)

我希望Prolog代码打印如下(所有组合):

我有一个代码可以打印单个组合[5,23],但不能打印下一个组合[11,17]

is_prime(2).
is_prime(3).
is_prime(P) :- integer(P), P > 3, P mod 2 =\= 0, \+ has_factor(P,3).  

has_factor(N,L) :- N mod L =:= 0.
has_factor(N,L) :- L * L < N, L2 is L + 2, has_factor(N,L2).

goldbach(4,[2,2]) :- !.
goldbach(N,L) :- N mod 2 =:= 0, N > 4, goldbach(N,L,3).

goldbach(N,[P,Q],P) :- Q is N - P, is_prime(Q), !.
goldbach(N,L,P) :- P < N, next_prime(P,P1), goldbach(N,L,P1).

next_prime(P,P1) :- P1 is P + 2, is_prime(P1), !.
next_prime(P,P1) :- P2 is P + 2, next_prime(P2,P1).
是素数(2)。
是素数(3)。
是素数(P):-整数(P),P>3,P mod 2=\=0,\+具有因子(P,3)。
has_因子(N,L):-N模L=:=0。
has_因子(N,L):-L*L4,哥德巴赫(N,L,3)。
哥德巴赫(N,[P,Q],P):-Q是N-P,是素数(Q)!。
哥德巴赫(N,L,P):-P
删除切割(并添加一个条件以避免重复答案)

哥德巴赫(4,[2,2])。 戈德巴赫(北,左):- N模2=:=0, N>4, 戈德巴赫(北、左、三)。 哥德巴赫(N[P,Q],P):- Q是N-P, 是素数(Q),P
请不要更改您的问题,以免答案无效!
is_prime(2).
is_prime(3).
is_prime(P) :- integer(P), P > 3, P mod 2 =\= 0, \+ has_factor(P,3).  

has_factor(N,L) :- N mod L =:= 0.
has_factor(N,L) :- L * L < N, L2 is L + 2, has_factor(N,L2).

goldbach(4,[2,2]) :- !.
goldbach(N,L) :- N mod 2 =:= 0, N > 4, goldbach(N,L,3).

goldbach(N,[P,Q],P) :- Q is N - P, is_prime(Q), !.
goldbach(N,L,P) :- P < N, next_prime(P,P1), goldbach(N,L,P1).

next_prime(P,P1) :- P1 is P + 2, is_prime(P1), !.
next_prime(P,P1) :- P2 is P + 2, next_prime(P2,P1).
goldbach(4,[2,2]).
goldbach(N,L) :-
  N mod 2 =:= 0,
  N > 4,
  goldbach(N,L,3).
goldbach(N,[P,Q],P) :-
  Q is N - P,
  is_prime(Q), P < Q.
goldbach(N,L,P) :-
  P < N,
  next_prime(P,P1),
  goldbach(N,L,P1).