9月29

54 阅读1分钟

for 循环部分

  • 代码 for(i <- 1 to 100 by 2) 中,i 是循环变量,1 to 100 表示循环范围是从 1 到 100(包含 100),by 2 表示步长为 2,也就是每次循环 i 的值增加 2。这样循环下来,i 依次会取 1、3、5……99 这些奇数,然后通过 println(i) 输出这些奇数。

while 循环部分(注释状态)

  • 代码 var i = 1 定义了变量 i 并初始化为 1。
  • while(i <= 100) 是 while 循环的条件,只要 i 小于等于 100,循环就会继续。
  • println(i) 用于输出当前的 i 值。
  • i += 2 表示每次循环后 i 的值增加 2,这样就能依次取到奇数。如果取消这部分代码的注释,也能实现输出 1 到 100 之间奇数的功能。
object base20 {
  def main(args: Array[String]): Unit = {
    val n = 97
    var isPrime = true

    // 修正后的for循环判断逻辑
    for (i <- 2 until n if isPrime) {
      if (n % i == 0) {
        isPrime = false
      }
    }

    if (isPrime) {
      println(s"$n 是素数")
    } else {
      println(s"$n 不是素数")
    }



  }
}
import scala.util.control.Breaks.{break, breakable}

object base21 {
  def main(args: Array[String]): Unit = {

    // breakable + break: 优化不是素数的情况:提前结束循环
    // Math.sqrt(n) : 减少搜索的范围

    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}不是素数")
    }
  }
}