我正在尝试使用scala解决SPOJ中的问题(素数生成器)。但它提醒我"时间限制"。任何人都知道这是为什么?
以下是我的代码。
var testCaseNumber = readInt()
for (index <- 1 to testCaseNumber) {
val range: Array[String] = readLine().split(" ")
(math.max(range(0).toInt, 2) to range(1).toInt).filter(num => {
var flag = true
for (element <- 2 to math.sqrt(num).toInt) {
if (num % element == 0) {
flag = false
}
}
flag
}).foreach(println)
println("")
}
答案 0 :(得分:0)
抱歉,但与scala无关。你的算法太慢了。
eratosthenes的分段筛是你的朋友。
https://turjachaudhuri.wordpress.com/2013/12/14/spoj-prime-1-segmented-sieve-of-eratosthenes/