Well some things kinda work I guess.
This commit is contained in:
@@ -7,7 +7,7 @@ import tester.Tester;
|
|||||||
class Sieve implements Iterator<Integer> {
|
class Sieve implements Iterator<Integer> {
|
||||||
int cur; // The current number.
|
int cur; // The current number.
|
||||||
int lim; // The largest number to check.
|
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) {
|
Sieve(int lim) {
|
||||||
if (lim < 2)
|
if (lim < 2)
|
||||||
@@ -19,7 +19,24 @@ class Sieve implements Iterator<Integer> {
|
|||||||
this.lim = lim;
|
this.lim = lim;
|
||||||
this.isntPrime = new boolean[lim + 1];
|
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) {
|
for (int i = this.cur; i <= this.lim; i += this.cur) {
|
||||||
@@ -30,23 +47,20 @@ class Sieve implements Iterator<Integer> {
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
// [ false false false false false false false ]
|
// [ false false true true false true false true ]
|
||||||
// [ 1 2 3 4 5 6 7 ]
|
// [ 0 1 2 3 4 5 6 7 ]
|
||||||
//
|
|
||||||
// [ false false false false false false false ]
|
|
||||||
// [ 1 2 3 4 5 6 7 ]
|
|
||||||
|
|
||||||
public boolean hasNext() { return true; }
|
public boolean hasNext() { return this.cur < this.lim; }
|
||||||
|
|
||||||
public Integer next() {
|
public Integer next() {
|
||||||
while (this.isntPrime[this.cur]) this.cur++;
|
while (this.isntPrime[this.cur]) this.cur++;
|
||||||
return this.cur;
|
return this.cur++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class Examples {
|
class Examples {
|
||||||
void testSieve(Tester t) {
|
void testSieve(Tester t) {
|
||||||
Sieve sieve = new Sieve(10);
|
Sieve sieve = new Sieve(29);
|
||||||
t.checkExpect(sieve.hasNext(), true);
|
t.checkExpect(sieve.hasNext(), true);
|
||||||
t.checkExpect(sieve.next(), 2);
|
t.checkExpect(sieve.next(), 2);
|
||||||
t.checkExpect(sieve.next(), 3);
|
t.checkExpect(sieve.next(), 3);
|
||||||
@@ -58,6 +72,6 @@ class Examples {
|
|||||||
t.checkExpect(sieve.next(), 19);
|
t.checkExpect(sieve.next(), 19);
|
||||||
t.checkExpect(sieve.next(), 23);
|
t.checkExpect(sieve.next(), 23);
|
||||||
t.checkExpect(sieve.next(), 29);
|
t.checkExpect(sieve.next(), 29);
|
||||||
t.checkExpect(sieve.next(), false);
|
t.checkExpect(sieve.hasNext(), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user