Hi Brian,
There seems to be a confusion between "upperBound" and the 1st "n"
primer numbers. You pass "upperBound" as the parameter "n" of the
parsePrimes() method which returns 1st "n" primes from the file (it can
return less primes if the file is smaller).
I suggest doing the following:
- make parsePrimes() take "n" as it does and return 1st "n" primes from
the file, but collect them into a NavigableSet (TreeSet) like that:
private static *NavigableSet<BigInteger>* parsePrimes(File f, long
n) throws IOException {
GZIPInputStream gis = new GZIPInputStream(new FileInputStream(f));
BufferedReader br = new BufferedReader(new InputStreamReader(gis));
try (Stream<String> lines = br.lines()) {
return
lines.limit(n).map(BigInteger::new).collect(*toCollection(TreeSet::new)*);
}
}
This would serve two purposes:
- you could obtain the largest prime number from the set easily
(NavigableSet.last()) and use it as the "upperBound" for the range of
integers you test.
- your test for containment would be faster - O(log2(n)) instead of O(n)
Regards, Peter
On 04/23/2014 01:48 AM, Brian Burkhalter wrote:
Hello,
Issue: https://bugs.openjdk.java.net/browse/JDK-8026236
Patch: http://cr.openjdk.java.net/~bpb/8026236/webrev.00/
This test provides a rudimentary verification of isProbablePrime() by:
1 - checking that the first 100000 primes are correctly identified as probably
prime
2 - checking that a random sample of positive integers does not reveal
non-prime numbers which test as prime
The test allows for specification of an alternate source file of prime numbers
if one wants to run it by hand. The file of primes included in the patch was
limited to 100000 values in the interest of keeping the file size small.
I think that the range of random numbers used for the non-prime portion of the
test (currently [0,100000)) needs to be reexamined, but I wanted to throw this
out there for discussion as-is.
I’ve extended the use of the j.u.stream API to the entire test as recommended
by Paul in
http://mail.openjdk.java.net/pipermail/core-libs-dev/2013-October/021859.html.
Thanks,
Brian