31 lines
		
	
	
		
			662 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			31 lines
		
	
	
		
			662 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,[]). | ||
|  | :- use_module(library(chr)). | ||
|  | 
 | ||
|  | :- constraints candidate/1. | ||
|  | :- constraints prime/1. | ||
|  | 
 | ||
|  | 
 | ||
|  | candidate(1) <=> true. | ||
|  | candidate(N) <=> primes:prime(N), N1 is N - 1, primes:candidate(N1). | ||
|  | 
 | ||
|  | absorb @ prime(Y) \ prime(X) <=> 0 is X mod Y | true. | ||
|  | 
 | ||
|  | time(N):- | ||
|  | 	cputime(X), | ||
|  | 	candidate(N), | ||
|  | 	cputime( Now), | ||
|  | 	Time is Now-X, | ||
|  | 	write(N-Time), nl. | ||
|  | 
 | ||
|  | cputime( Ts) :-  | ||
|  | 	statistics( runtime, [Tm,_]), | ||
|  | 	Ts is Tm/1000. |