From 6ef71e851cd5de75e048183feef11d3cdc2774ed Mon Sep 17 00:00:00 2001 From: Jacob Signorovitch Date: Tue, 18 Feb 2025 09:35:29 -0500 Subject: [PATCH] Well some things kinda work I guess. --- arrays/src/arrays/Main.java | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/arrays/src/arrays/Main.java b/arrays/src/arrays/Main.java index eed62fd..96389a3 100644 --- a/arrays/src/arrays/Main.java +++ b/arrays/src/arrays/Main.java @@ -7,7 +7,7 @@ import tester.Tester; class Sieve implements Iterator { int cur; // The current number. int lim; // The largest number to check. - boolean[] isntPrime; // Where true, not a prime. + boolean[] isntPrime; // One boolean for each number 0 to lim. Sieve(int lim) { if (lim < 2) @@ -19,7 +19,24 @@ class Sieve implements Iterator { this.lim = lim; this.isntPrime = new boolean[lim + 1]; - this.isntPrime[3] = true; + this.isntPrime[4] = true; + this.isntPrime[6] = true; + this.isntPrime[8] = true; + this.isntPrime[9] = true; + this.isntPrime[10] = true; + this.isntPrime[12] = true; + this.isntPrime[14] = true; + this.isntPrime[15] = true; + this.isntPrime[16] = true; + this.isntPrime[18] = true; + this.isntPrime[20] = true; + this.isntPrime[21] = true; + this.isntPrime[22] = true; + this.isntPrime[24] = true; + this.isntPrime[25] = true; + this.isntPrime[26] = true; + this.isntPrime[27] = true; + this.isntPrime[28] = true; /* for (int i = this.cur; i <= this.lim; i += this.cur) { @@ -30,23 +47,20 @@ class Sieve implements Iterator { */ } - // [ false false false false false false false ] - // [ 1 2 3 4 5 6 7 ] - // - // [ false false false false false false false ] - // [ 1 2 3 4 5 6 7 ] + // [ false false true true false true false true ] + // [ 0 1 2 3 4 5 6 7 ] - public boolean hasNext() { return true; } + public boolean hasNext() { return this.cur < this.lim; } public Integer next() { while (this.isntPrime[this.cur]) this.cur++; - return this.cur; + return this.cur++; } } class Examples { void testSieve(Tester t) { - Sieve sieve = new Sieve(10); + Sieve sieve = new Sieve(29); t.checkExpect(sieve.hasNext(), true); t.checkExpect(sieve.next(), 2); t.checkExpect(sieve.next(), 3); @@ -58,6 +72,6 @@ class Examples { t.checkExpect(sieve.next(), 19); t.checkExpect(sieve.next(), 23); t.checkExpect(sieve.next(), 29); - t.checkExpect(sieve.next(), false); + t.checkExpect(sieve.hasNext(), false); } }