advent calendar 12/19を見ましたら埋まっていませんでしたし、
Prologの日もありませんでしたので至急コードを書きました。
Fが合成数ならリストに加えF+1を評価しリストの長さがNなら合計して終了です。
%swi-Prolog version 7.4.2
%solve(100,R). %など
%:-initialization(solve(100,R)). % ideone
syn(X):-floor(sqrt(X),Y),between(2,Y,N),X mod N =:=0,!.
solve(N,_,L,R):-length(L,N),sumlist(L,R),write(R).
solve(N,F,L,R):-(syn(F)->L1=[F|L];L1=L),F1 is F+1,solve(N,F1,L1,R).
solve(N,R):-solve(N,4,[],R),!.
(追加)
Prologは戻り値が他の言語のような形では帰りませんので習慣でsolve(N,R)と書きましたが、
write/1があればRはいりませんので、そちらも載せます。
%solve(100). %など
%:-initialization(solve(100)).
syn(X):-floor(sqrt(X),Y),between(2,Y,N),X mod N =:=0,!.
solve(N,_,L):-length(L,N),sumlist(L,R),write(R).
solve(N,F,L):-(syn(F)->L1=[F|L];L1=L),F1 is F+1,solve(N,F1,L1).
solve(N):-solve(N,4,[]),!.