Preparing 5.6.51
[chr.git] / Benchmarks / primes.chr
blobe16e9368d9a4d44268746c9b90957c7c5d1f2bff
1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 %%
3 %% Sieve of eratosthenes to compute primes
4 %% thom fruehwirth 920218-20, 980311
5 %% christian holzbaur 980207 for Sicstus CHR
6 %%
7 %% ported to hProlog by Tom Schrijvers 
9 :- module(primes,[main/0,main/1]).
11 :- constraints candidate/1.
12 :- constraints prime/1.
14 candidate(1) <=> true.
15 candidate(N) <=> primes:prime(N), N1 is N - 1, primes:candidate(N1).
17 absorb @ prime(Y) \ prime(X) <=> 0 =:= X mod Y | true.
19 main :-
20         main(2500).
22 main(N):-
23         cputime(X),
24         candidate(N),
25         cputime( Now),
26         Time is Now-X,
27         write(bench(primes ,N,Time,0,hprolog)), write('.'),nl.