戈德巴赫&x2019;prolog中的s猜想
哥德巴赫猜想:每一个大于2的正偶数都是两个素数的和。例28(5,23和11,17) 我希望Prolog代码打印如下(所有组合): 我有一个代码可以打印单个组合[5,23],但不能打印下一个组合[11,17]戈德巴赫&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(
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).