home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 03 / sieb.pro < prev    next >
Encoding:
Text File  |  1987-02-03  |  919 b   |  41 lines

  1.  
  2. "Sieb des Eratosthenes"
  3.  
  4. Primzahlen(n,L-iste) ->
  5.    Zahlen-von-bis(2,n,z-ahlen)
  6.    Sieb(z-ahlen,n,L-iste);
  7.  
  8. Zahlen-von-bis(n1,n2,n1.z-ahlen) ->
  9.    kleiner-gleich(n1,n2)
  10.    /
  11.    plus(n1,1,n)
  12.    Zahlen-von-bis(n,n2,z-ahlen);
  13. Zahlen-von-bis(n1,n2,nil) ->;
  14.  
  15. Sieb(p.l,n,p.l) ->
  16.    quadrat-groesser(p,n)
  17.    /;
  18. Sieb(p.l-iste-alt,n,p.p-rimzahlen) ->
  19.    Vielfache-streichen(p,l-iste-alt,l-iste-neu)
  20.    Sieb(l-iste-neu,n,p-rimzahlen);
  21.  
  22. Vielfache-streichen(p,nil,nil) ->;
  23. Vielfache-streichen(p,n.l-iste-alt,l-iste-neu) ->
  24.    Vielfaches(n,p)
  25.    /
  26.    Vielfache-streichen(p,l-iste-alt,l-iste-neu);
  27. Vielfache-streichen(p,n.l-iste-alt,n.l-iste-neu) ->
  28.    Vielfache-streichen(p,l-iste-alt,l-iste-neu);
  29.  
  30. "Rechenregeln"
  31.  
  32. kleiner-gleich(x,y) -> val(inf(y,x),0);
  33.  
  34. plus(x,y,z) -> val(add(x,y),z);
  35.  
  36. quadrat-groesser(p,n) ->
  37.    val(mul(p,p),z)
  38.    val(inf(n,z),1);
  39.  
  40. Vielfaches(n,p) -> val(mod(n,p),0);
  41.