Twin primes: Difference between revisions

Content added Content deleted
imported>Maxima enthusiast
No edit summary
m (New post which completes the extended task, in addition to an existing post which completes only the standard task.)
Line 928: Line 928:
> 1000
> 1000
> 35 twin prime pairs.
> 35 twin prime pairs.
</pre>

===Extended Task===
<syntaxhighlight lang="java">
import java.util.BitSet;

public final class TwinPrimes {

public static void main(String[] args) {
final int limit = 1_000_000_000;
sievePrimes(limit);
int target = 10;
int count = 0;
boolean last = false;
boolean first = true;
for ( int index = 5; index <= limit; index += 2 ) {
last = first;
first = primes.get(index);
if ( last && first ) {
count += 1;
}
if ( index + 1 == target ) {
System.out.println(String.format("%8d%s%d", count, " twin primes below ", index + 1));
target *= 10;
}
}
}
private static void sievePrimes(int aLimit) {
primes = new BitSet(aLimit + 1);
primes.set(2, aLimit + 1);
for ( int i = 2; i <= Math.sqrt(aLimit); i = primes.nextSetBit(i + 1) ) {
for ( int j = i * i; j <= aLimit; j += i ) {
primes.clear(j);
}
}
}
private static BitSet primes;

}
</syntaxhighlight>
{{ out }}
<pre>
2 twin primes below 10
8 twin primes below 100
35 twin primes below 1000
205 twin primes below 10000
1224 twin primes below 100000
8169 twin primes below 1000000
58980 twin primes below 10000000
440312 twin primes below 100000000
3424506 twin primes below 1000000000
</pre>
</pre>