时间限制在SPOJ(即2. Prime Generator)中使用scala

时间:2015-07-26 07:46:23

标签: scala

我正在尝试使用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("")
}

1 个答案:

答案 0 :(得分:0)

抱歉,但与scala无关。你的算法太慢了。

eratosthenes的分段筛是你的朋友。

https://turjachaudhuri.wordpress.com/2013/12/14/spoj-prime-1-segmented-sieve-of-eratosthenes/