Problem 10

えぇーい、力技じゃい。問題を解く場合にはコンピュータが頑張らなければいけないのであって、人間は頑張ってはいけないのだ!(意味が違う)

object Problem10 {
  def natural = new Iterator[Int] {
    var num = 1
    def hasNext : Boolean = true
    def next : Int = {
      num += 1
      num
    }
  }
  def primes = new Iterator[Int] {
    var p : Iterator[Int] = natural
    def hasNext : Boolean = true
    def next : Int = {
      var t : Int = p.next
      p = p.filter((n:Int) => n%t != 0)
      t
    }
  }
  def main(args:Array[String]) : Unit = {
    var sum = 0
    var c = 0
    for ( p <- primes ) {
      if ( p < 2000000 )
	sum += p
      else {
	println("result: "+sum)
	return ()
      }
      c+=1
      if (c%10000 == 0)
	println("now: "+p)
    }
  }
}

今度こそ止まらないね。