1〜7の順列を逆向きに出して最初の素数です。
def is_prime(n :Int) = Iterator.from(2).takeWhile(m => m * m <= n).forall(n % _ != 0) def permutations[T](a :List[T]) :Iterator[List[T]] = if(a == Nil) Iterator(Nil) else for(k <- Iterator.range(0, a.size); e = a(k); b <- permutations(a.slice(0, k) ++ a.slice(k + 1, a.size))) yield a(k) :: b def number(a :List[Int]) = a.foldLeft(0)(_ * 10 + _) println (permutations(List.range(7, 0, -1)).map(number).filter(is_prime).next)