[nem-pl] Uwagi różne

Michal Moskal malekith at pld-linux.org
Thu Feb 19 01:30:19 CET 2004


using System.Console;
                                                                                                           
class Primes {
  static Main () : void
  {
    def d = 1000;
    def n = 2 * d * d;
    def isNotPrime = array (n);
    def sb = System.Text.StringBuilder ();
    Write ("2");
                                                                                                           
    for (mutable i <- 0; i < d; i <- i + 1) {
      unless (isNotPrime[i]) {
        def p = 2 * i + 3;
        ignore (sb.Append (' '));
        ignore (sb.Append (p));
        for (mutable j <- i + p; j < n; j <- j + p)
          isNotPrime[j] <- true
      }
    };
                                                                                                           
    for (mutable i <- d; i < n; i <- i + 1) {
      unless (isNotPrime[i]) {
        ignore (sb.Append (' '));
        ignore (sb.Append (2 * i + 3));
      }
    };
                                                                                                           
    WriteLine (sb.ToString ())
  }
}

Ta wersja jest u mnie 5 razy szybsza od tej z Write(). Tak czy inaczej
ten program głównie co robi to produkuje stringi, nie wiem czy takie
było zamierzenie. Znaczy dla odpowiednio dużych n pewnie by więcej tych
mnożeń etc było niż robienia stringów, ale dla 1000 to chyba nie bardzo.

-- 
: Michal Moskal :: http://www.kernel.pl/~malekith :: GCS !tv h e>+++ b++
: When in doubt, use brute force. -- Ken Thompson :: UL++++$ C++ E--- a?




More information about the devel-pl mailing list