Lucas-Lehmer test: Difference between revisions

Content deleted Content added
→‎{{header|Scala}}: Parallel processing since 2.8 made it possible for quicker processing.
Line 1,266:
=={{header|Ruby}}==
<lang ruby>def is_prime ( p )
return true if p == 2
return false if p <= 1 || p.even?
return true
(3 .. Math.sqrt(p)).step(2) do |i|
elsif p <= 1 || p % 2 == 0
return false if p % i == 0
else
(3 .. Math.sqrt(p)).step(2) do |i|
if p % i == 0
return false
end
end
return true
end
true
end
 
def is_mersenne_prime ( p )
return true if p == 2
m_p = ( 1 if<< p %) i ==- 01
return true
elses = 4
(p-2).times { m_ps = (s 1** <<2 p- 2) -% m_p 1}
s == 40
(p-2).times do
s = (s ** 2 - 2) % m_p
end
return s == 0
end
end
 
Line 1,298 ⟶ 1,287:
upb_count = 45 # find 45 mprimes if int was given enough bits #
 
puts " Finding Mersenne primes in M[2..%d]:" % upb_prime
 
count = 0
for p in 2..upb_prime
if is_prime(p) && is_mersenne_prime(p)
print "M%d " % p
count += 1
end
break if count >= upb_count
break
end
end
puts</lang>
 
{{out}}
Output:
<pre> Finding Mersenne primes in M[2..33218]:
M2 M3 M5 M7 M13 M17 M19 M31 M61 M89 M107 M127 M521 M607 M1279 M2203 M2281 M3217 M4253 M4423 M9689 M9941 M11213 M19937 M21701 M23209</pre>