for循环
在scala代码中,有一种循环方式叫做for循环,当我们需要计算某一项东西的时候,我们可以选择敲击以下代码:
object base21 {
def main(args: Array[String]): Unit = {
//输出 1 ~ 100
for (i <- 1 to 100) {
println(i)
}
}
}
运行结果如图所示:
当我换一种方式时,假如我要在1~100找出素数,可以敲击以下代码:
object base22 {
def main(args: Array[String]): Unit = {
//输出 1 ~ 100 中的能整除2,3,4的数字
for (i <- 1 to 100; if(i%2 == 0); if(i%3 == 0); if(i%4 == 0)) {
println(i)
}
}
}
运行结果如图所示:
当我需要找出1~100中的奇数或者偶数时,可以选择敲击以下代码:
object base23 {
def main(args: Array[String]): Unit = {
//输出 1 ~ 100 中的奇数
for (i <- 99 to 1 by -2 ) {
println(i)
}
}
}
运行结果如图所示:
可以看到我求奇数,奇数是从大到小进行排序的
当我们想要判断某一个数字是不是素数时,这个代码的原理和判断闰年的原理差不多,必要时我们可以敲击以下代码:
object base24 {
def main(args: Array[String]): Unit = {
/**...*/
val n = 97
// 假如它是素数
var isPrime = true
for (i <- 2 to (n - 1)) {
if (n % i == 0){ // 能整除
isPrime = false
}
}
if(isPrime){
println(s"{n}是素数")
} else {
println(s"{n}不是素数")
}
}
}
运行结果如图所示:
你可以给这个n随意赋值,在这代码里,都可以给你判断出这个赋值的n是否为素数。
如果在以上代码加入一个优化不是素数的情况,如果有的话可以提前结束循环:
可以敲击以下代码:
object base25 {
def main(args: Array[String]): Unit = {
/**...*/
// breakable + break: 优化不是素数的情况:提前结束循环
// Math.sqrt(n) : 减少搜索的范围
import scala.util.control.Breaks._
val n = 97
// 假如它是素数
var isPrime = true
breakable{
for (i <- 2 to Math.sqrt(n).toInt) {
if (n % i == 0){ // 能整除,结束循环
println(s"${i}能整除")
isPrime = false
break
}
println(i)
}
}
if(isPrime){
println(s"{n}是素数")
} else {
println(s"{n}不是素数")
}
}
加入了这些优化不是素数的因素,运行结果如图所示: