home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / lifeos2.zip / LIFE-1.02 / TESTS / LF / ERATOSTH.LF < prev    next >
Text File  |  1996-06-04  |  466b  |  28 lines

  1.    global(sieve)?
  2.    global(limit)?
  3.  
  4.    main :-
  5.       write("N=?"),
  6.       read_token(limit & int),
  7.       next_prime(2),
  8.       nl.
  9.  
  10.    remove_multiples(P,M) :-
  11.       cond(M<limit,
  12.            (sieve.M<-multiple_of(P),remove_multiples(P,M+P))).
  13.  
  14.    next_prime(P) :-
  15.       P<limit,
  16.       !,
  17.       SP=sieve.P,
  18.       ( SP=prime(P),
  19.         !,
  20.         write(P,' '),
  21.         remove_multiples(P,2*P)
  22.       ;
  23.         succeed
  24.       ),
  25.       next_prime(P+1).
  26.  
  27.    next_prime(P).
  28.