[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