Scala 10~1000质数求和

将 10~1000 的质数相加求和

object Work {
  def main(args: Array[String]): Unit = {
    println(sumPrimes(10, 1000))
  }

  def sumPrimes(from: Int,to: Int):Int = {
  	// val ints:Array[Int] = filter(from.to(to).toArray,x=>isPrime(x))
    val ints:Array[Int] = filter(from.to(to).toArray,isPrime)
    //这个地方不是调用isPrime,是把isPrime当成函数传递
    var sum = 0
    //println(ints.mkString(",")) 打印 ints 数组,元素与元素之间用逗号隔开
 	reduce(ints,_ + _)
  }
  //判断是否为质数
  def isPrime(n:Int) :Boolean = {
    for(i <- 2 until n if n % i ==0)
      return false
    return true
  }
  //过滤非质数,返回质数构成的集合
  def filter(arr:Array[Int],op:Int=>Boolean)={
    for(elem <- arr if op(elem))
      yield elem
  }
  //求数组之和
  def reduce (arr:Array[Int],op:(Int,Int)=>Int)={
    var lastReduce = arr(0)
    for(i <-1 until arr.length){
      lastReduce = op(lastReduce,arr(i))
    }
    lastReduce
  }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值