Meissel–Mertens constant: Difference between revisions
Content added Content deleted
(New post.) |
m (Minor improvement to code.) |
||
Line 540: | Line 540: | ||
import java.util.List; |
import java.util.List; |
||
/** |
|||
* Calculates the Meissel-Mertens constant correct to 9 s.f. in approximately 15 seconds. |
|||
*/ |
|||
public final class MeisselMertensConstant { |
public final class MeisselMertensConstant { |
||
Line 550: | Line 547: | ||
double sum = 0.0; |
double sum = 0.0; |
||
for ( double reciprocal : primeReciprocals ) { |
for ( double reciprocal : primeReciprocals ) { |
||
sum += |
sum += reciprocal + Math.log(1.0 - reciprocal); |
||
} |
} |
||
final double |
final double meisselMertens = euler + sum; |
||
System.out.println("The Meissel-Mertens constant = " |
System.out.println(String.format("%s%.9f", "The Meissel-Mertens constant = ", meisselMertens)); |
||
} |
} |
||
Line 561: | Line 558: | ||
sieve.set(2, aLimit + 1); |
sieve.set(2, aLimit + 1); |
||
for ( int i = 2; i <= Math.sqrt(aLimit); i = sieve.nextSetBit(i + 1) ) { |
|||
for ( int i = 2; i <= squareRoot; i = sieve.nextSetBit(i + 1) ) { |
|||
for ( int j = i * i; j <= aLimit; j += i ) { |
for ( int j = i * i; j <= aLimit; j += i ) { |
||
sieve.clear(j); |
sieve.clear(j); |
||
Line 577: | Line 573: | ||
} |
} |
||
</syntaxhighlight> |
|||
{{ out }} |
{{ out }} |
||
<pre> |
<pre> |
||
The Meissel-Mertens constant = 0. |
The Meissel-Mertens constant = 0.261497213 |
||
</pre> |
</pre> |
||