Lucas-Lehmer test: Difference between revisions

Content deleted Content added
adding maxima
Updated D code
Line 310:
<lang d>import std.stdio, std.math, std.bigint;
 
bool isPrime(int p) pure nothrow {
if (p < 2 || p % 2 == 0) return p == 2 ;
foreach( i ; 3..cast(uint)(sqrt( return p)) +== 1)2;
foreach (i; 3 .. ifcast(uint)(sqrt(cast(real)p)) % i ==+ 01)
if (p % i return== false ;0)
stdout.flush()return false;
return true ;
}
 
bool isMersennePrime(int p) /*pure nothrow*/ {
if (!isPrime(p)) return false ;
if(p == 2) return truereturn false;
autoif mp(p == (BigInt(12) << p) - 1 ;
auto s = BigInt(4)return true;
foreachauto mp = (_BigInt(1) ;<< 3..p+1) - 1;
auto s s = BigInt(s*s - 24) % mp ;
returnforeach s(_; ==3 0.. ;p + 1)
s = (s ^^ 2 - 2) % mp;
return s == 0;
}
 
shared int[] result ;
 
void main() {
foreach (p ; 2 ..10000 10_000)
 
if (isMersennePrime(p)) {
foreach(p ; 2..10000)
if(isMersennePrime write(" M", p)) {;
writestdout.flush(" M", p) ;
stdout.flush() ;
}
}</lang>