Ich möchte in Scala eine Stream
implementieren, um Mersenne-Primzahlen mit dem Lucas-Lehmer-Primalitätstest zu finden. Ich habe bereits:Mersenne-Primzahlen mit Lucas-Lehmer-Primalitätstest finden
object Main {
//Mersenne Numbers:
def msrn():Stream[BigInt] = 7#::msrn.map(_*2+1)
def s():Stream[BigInt] = 14 #:: s.map(n => n*n-2)
lazy val zips = s.zip(msrn)
def main(args: Array[String]) {
zips take 7 foreach println
}
}
Was ich jetzt tun müssen, ist alle Mersenne-Zahlen (Elemente in msrn
) finden, die das Element in s
teilt und schreiben sie in einem Stream
.
Edit: es wurde gelöst:
object Main {
def msrn():Stream[BigInt] = 7#::msrn.map(_*2+1)
def s():Stream[BigInt] = 14 #:: s.map(n => n*n-2)
lazy val zips = s.zip(msrn).filter(x=>x._1%x._2==0)
def mersennePrimeStream():Stream[BigInt] = zips.map(x => x._2)
def main(args: Array[String]) {
mersennePrimeStream take 4 foreach println
}
}
Gibt es eine Möglichkeit, obwohl es kürzer zu machen?
Vielen Dank! Erstaunliche Antwort. – nlsmrg