31 lines
542 B
Prolog
31 lines
542 B
Prolog
checkpair(1, 2).
|
|
checkpair(R, K) :-
|
|
checkpair(R0, K0),
|
|
R is 10*R0 + 1,
|
|
K is K0 + 1.
|
|
|
|
deceptive(K) :-
|
|
checkpair(R, K),
|
|
\+ prime(K),
|
|
divmod(R, K, _, 0).
|
|
|
|
task(K, Ns) :-
|
|
lazy_findall(N, deceptive(N), Ds),
|
|
length(Ns, K),
|
|
prefix(Ns, Ds).
|
|
|
|
% check if a number is prime
|
|
%
|
|
wheel235(L) :-
|
|
W = [4, 2, 4, 2, 4, 6, 2, 6 | W],
|
|
L = [1, 2, 2 | W].
|
|
|
|
prime(N) :-
|
|
N >= 2,
|
|
wheel235(W),
|
|
prime(N, 2, W).
|
|
|
|
prime(N, D, _) :- D*D > N, !.
|
|
prime(N, D, [A|As]) :-
|
|
N mod D =\= 0,
|
|
D2 is D + A, prime(N, D2, As).
|