%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% Sieve of eratosthenes to compute primes %% thom fruehwirth 920218-20, 980311 %% christian holzbaur 980207 for Sicstus CHR %% :- module(primes,[main/0,main/1]). :- use_module(library(chr)). handler primes. constraints candidate/1. constraints prime/1. candidate(1) <=> true. candidate(N) <=> prime(N), N1 is N - 1, candidate(N1). absorb @ prime(Y) \ prime(X) <=> 0 =:= X mod Y | true. main :- main(2500). main(N):- statistics(runtime,[X|_]), candidate(N), statistics(runtime,[ Now|_]), Time is Now-X, write(bench(primes,N,Time,0,sicstus)), write('.'), nl.