-1
Goldbach의 추측 : 2보다 큰 모든 양수는 두 소수의 합계입니다.프롤로그에 Goldbach의 추측
?- goldbach(28, L).
Output :
L = [5,23];
L = [11, 17];
을 내가 하나의 조합 [5,23]을 출력하는 코드를 가지고 있지만 : 예 : 28 (5,23 및 11, 17)는
나는 프롤로그 코드 (모든 조합) 아래에 인쇄 할 다음 [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).
답변이 무효화되지 않도록 변경하지 마십시오! – false