Meissel–Mertens constant: Difference between revisions
Content added Content deleted
(→{{header|Wren}}: Added Analytic method.) |
(Meissel–Mertens constant in various BASIC dialents (BASIC256, Run BASIC and Yabasic)) |
||
Line 99: | Line 99: | ||
after 1270607 primes, the approximation is: 0.261497214255, last prime considered: 19999999 |
after 1270607 primes, the approximation is: 0.261497214255, last prime considered: 19999999 |
||
</pre> |
</pre> |
||
=={{header|BASIC}}== |
|||
==={{header|BASIC256}}=== |
|||
{{trans|FreeBASIC}} |
|||
<syntaxhighlight lang="freebasic">Euler = 0.5772156649 |
|||
m = 0 |
|||
for x = 2 to 1e6 # more prime numbers do not add more precision |
|||
if isPrime(x) then m += log(1-(1/x)) + (1/x) |
|||
next x |
|||
print "MM = "; Euler + m |
|||
print Euler |
|||
end |
|||
function isPrime(v) |
|||
if v < 2 then return False |
|||
if v mod 2 = 0 then return v = 2 |
|||
if v mod 3 = 0 then return v = 3 |
|||
d = 5 |
|||
while d * d <= v |
|||
if v mod d = 0 then return False else d += 2 |
|||
end while |
|||
return True |
|||
end function</syntaxhighlight> |
|||
{{out}} |
|||
<pre>MM = 0.26149724673</pre> |
|||
==={{header|Run BASIC}}=== |
|||
{{trans|FreeBASIC}} |
|||
<syntaxhighlight lang="lb">function isPrime(n) |
|||
if n < 2 then isPrime = 0 : goto [exit] |
|||
if n = 2 then isPrime = 1 : goto [exit] |
|||
if n mod 2 = 0 then isPrime = 0 : goto [exit] |
|||
isPrime = 1 |
|||
for i = 3 to int(n^.5) step 2 |
|||
if n mod i = 0 then isPrime = 0 : goto [exit] |
|||
next i |
|||
[exit] |
|||
end function |
|||
e = 0.5772156 |
|||
for x = 2 to 100000 ' more prime numbers do not add more precision |
|||
if isPrime(x) then m = m + log(1-(1/x)) + (1/x) |
|||
next x |
|||
print "MM = "; e + m</syntaxhighlight> |
|||
{{out}} |
|||
<pre>MM = 0.261274</pre> |
|||
==={{header|Yabasic}}=== |
|||
{{trans|FreeBASIC}} |
|||
<syntaxhighlight lang="freebasic">e = 0.5772156 |
|||
for x = 2 to 1e6 // more prime numbers do not add more precision |
|||
if isPrime(x) m = m + log(1-(1/x)) + (1/x) |
|||
next x |
|||
print "MM = ", e + m |
|||
end |
|||
sub isPrime(v) |
|||
if v < 2 return False |
|||
if mod(v, 2) = 0 return v = 2 |
|||
if mod(v, 3) = 0 return v = 3 |
|||
d = 5 |
|||
while d * d <= v |
|||
if mod(v, d) = 0 then return False else d = d + 2 : fi |
|||
wend |
|||
return True |
|||
end sub</syntaxhighlight> |
|||
{{out}} |
|||
<pre>MM = 0.261497</pre> |
|||
=={{header|FreeBASIC}}== |
=={{header|FreeBASIC}}== |