Skip to content

Commit 1965bb6

Browse files
authored
Merge pull request #5 from yourbasic/tip
Optimize sieve example
2 parents 44b3e09 + 65842de commit 1965bb6

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

example_test.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,15 @@ func Example_basics() {
3131
// Create the set of all primes less than n in O(n log log n) time.
3232
// Try the code with n equal to a few hundred millions and be pleasantly surprised.
3333
func Example_primes() {
34-
// Sieve of Eratosthenes
34+
// Sieve of Eratosthenes (with optimization suggested by tege)
3535
const n = 50
3636
sieve := bit.New().AddRange(2, n)
37+
for k := 4; k < n; k += 2 {
38+
sieve.Delete(k)
39+
}
3740
sqrtN := int(math.Sqrt(n))
38-
for p := 2; p <= sqrtN; p = sieve.Next(p) {
39-
for k := p * p; k < n; k += p {
41+
for p := 3; p <= sqrtN; p = sieve.Next(p) {
42+
for k := p * p; k < n; k += 2 * p {
4043
sieve.Delete(k)
4144
}
4245
}

0 commit comments

Comments
 (0)