31 lines
676 B
Plaintext
31 lines
676 B
Plaintext
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
%%
|
||
|
%% Sieve of eratosthenes to compute primes
|
||
|
%% thom fruehwirth 920218-20, 980311
|
||
|
%% christian holzbaur 980207 for Sicstus CHR
|
||
|
%%
|
||
|
%% ported to hProlog by Tom Schrijvers
|
||
|
|
||
|
:- module(primes,[main/0,main/1]).
|
||
|
|
||
|
:- use_module(library(chr)).
|
||
|
|
||
|
:- chr_constraint candidate/1.
|
||
|
:- chr_constraint prime/1.
|
||
|
|
||
|
candidate(1) <=> true.
|
||
|
candidate(N) <=> primes:prime(N), N1 is N - 1, primes:candidate(N1).
|
||
|
|
||
|
absorb @ prime(Y) \ prime(X) <=> 0 =:= X mod Y | true.
|
||
|
|
||
|
main :-
|
||
|
main(2500).
|
||
|
|
||
|
main(N):-
|
||
|
cputime(X),
|
||
|
candidate(N),
|
||
|
cputime( Now),
|
||
|
Time is Now-X,
|
||
|
write(bench(primes ,N,Time,0,hprolog)), write('.'),nl.
|
||
|
|