Mersenne primes: Difference between revisions
Content added Content deleted
m (→{{header|Lua}}) |
(→{{header|Scala}}: migrate to Scala 2.13) |
||
Line 1,064: | Line 1,064: | ||
=={{header|Scala}}== |
=={{header|Scala}}== |
||
<lang Scala> |
<lang Scala> |
||
object MersennePrimes extends App { |
|||
import Stream._ |
|||
val primes = primeSieve(LazyList.from(2)) |
|||
⚫ | |||
val primes = primeSieve(from(2)) |
|||
⚫ | |||
⚫ | |||
val upbPrime = 9941 |
val upbPrime = 9941 |
||
def primeSieve(s: LazyList[Int]): LazyList[Int] = |
|||
⚫ | |||
_ % s.head != 0 |
|||
}) |
|||
⚫ | |||
def s(mp: BigInt, p: Int): BigInt = { |
|||
⚫ | |||
} |
|||
println(s"Finding Mersenne primes in M[2..$upbPrime]") |
println(s"Finding Mersenne primes in M[2..$upbPrime]") |
||
((primes takeWhile (_ <= upbPrime)). |
((primes takeWhile (_ <= upbPrime)).map { p => (p, mersenne(p)) } |
||
map { p => if (p._1 == 2) (p, 0) else (p, s(p._2, p._1 - 1)) } filter { |
map { p => if (p._1 == 2) (p, 0) else (p, s(p._2, p._1 - 1)) } filter { |
||
_._2 == 0 |
|||
}) |
|||
.foreach { p => |
.foreach { p => |
||
println(s"prime M${(p._1)._1}: " + |
println(s"prime M${(p._1)._1}: " + { |
||
if ((p._1)._1 < 200) (p._1)._2 else s"(${(p._1)._2.toString.length} digits)" |
|||
}) |
|||
} |
} |
||
println("That's All Folks!") |
println("That's All Folks!") |
||
} |
|||
</lang> |
|||
=={{header|Sidef}}== |
=={{header|Sidef}}== |
||
Uses the ''is_mersenne_prime()'' function from [https://metacpan.org/pod/Math::Prime::Util::GMP Math::Prime::Util::GMP]. |
Uses the ''is_mersenne_prime()'' function from [https://metacpan.org/pod/Math::Prime::Util::GMP Math::Prime::Util::GMP]. |