not_prime(N):-N<2,!.
not_prime(N):-
between(2,N,D),
(D^2>N -> !,fail;N mod D=:=0),
!.
is_prime(N):-not(not_prime(N)).
check(0,_,_):-!.
check(Len,Keta,Num):-
is_prime(Num),
Len1 is Len-1,
Num1 is Num//10+(Num mod 10)*(10^(Keta-1)),
check(Len1,Keta,Num1).
seed(Len,Num,Num):-
Len>1,
check(Len,Len,Num).
seed(Len,Num,Result):-
Len<6,
member(E,[1,3,7,9]),
Len1 is Len+1,
Num1 is Num*10+E,
seed(Len1,Num1,Result).
main:-
findall(E,seed(0,0,E),Es),
length(Es,Ans),
Ans2 is Ans+4,
write(Ans2).
最終更新:2014年12月03日 09:35