package spoj
object Prime1 {
def main(args: Array[String]) {
def isPrime(n: Int) = (n != 1) && (2 to n/2 forall (n % _ != 0))
val read = new java.util.Scanner(System.in)
var nTests = read nextInt // [*]
while(nTests > 0) {
val (start, end) = (read nextInt, read nextInt)
start to end filter(isPrime(_)) foreach println
println
nTests -= 1
}
}
}
aşağıdaki derleme zamanı hatası alıyorum: Ben eklediğinizde
PRIME1.scala:8: error: illegal start of simple expression
while(nTests > 0) {
^
PRIME1.scala:14: error: block must end in result expression, not in definition
}
^
two errors found
satırın sonunda bir noktalı virgül [*]
olarak yorumladı, Program iyi derler. Scala'nın noktalı virgül çıkarımının neden belirli bir çizgide çalışmayı başaramadığını açıklayan herhangi biri olabilir mi?
Sadece konu dışı, '2 ila n/2' yerine' 2 Math.sqrt (n) 'ile değiştirilebilir - her ne kadar daha iyi bir performans sağlayacağını bilmeme rağmen, kanonik çözümdür (Sanırım olmaz). – incarnate
Bunun bir OLD iş parçacığı olduğunu biliyorum, ancak "next next" satırından sonra noktalı virgül yerleştirebilir misiniz? ya da bu bir problem çünkü 'nextInt' için bir argüman bulunmuyor mu? – Ramy
@Ramy: Yanıtları okuyun. – missingfaktor