08内建控制-循环语句while2

34 阅读1分钟

一. 案例-求数列的和

已知: 1 + 2 + 3 + 4...... + 19 = 190

var i = 1
var sum = 0
while (i <= 19){
  sum += i //sum = sum + 1
  i = i + 1
}
println(s"1 + 2 + 3 + 4...... + 19 = ${sum}")

结果如图:

屏幕截图 2025-09-24 091148.png

问题1: 1 + 1/2 + 1/3 + 1/4 + 1/5.... + 1/19

var sum1: Double = 0.0
var a = 1
while (a <= 19) {
  sum1 += 1.0 / a
  a += 1
}
println(s"1 + 1/2 + 1/3 + ... + 1/19 = ${sum1}")

结果如图:

屏幕截图 2025-09-24 091430.png

问题2: 1 - 1/2 + 1/3 - 1/4 + 1/5.... + 1/19

var sum2:Double = 0
var b = 1
while(b <= 19) {
  // 如果i是奇数就是 +
  if(b%2 == 1){
    sum2 += 1.0 / b
  } else { // 否则,就是 -
    sum2 -= 1.0 / b
  }
  b += 1
}
println(s"1 - 1/2 + 1/3 - 1/4 + 1/5.... + 1/19=${sum2}")

结果如图:

屏幕截图 2025-09-24 092110.png

二. 案例-判断是否素数

素数,只能 1 和它本身能整除。

思路: 1、假设它是一个素数。

2、循环

使用 2,3,4,...,num-1 去除 num,如果能整除,说明 num 不是素数

3、循环结束,输出结果

var num = 121
var isPrime = true // 假设是素数
var i = 2
while (i <= num - 1){
  if (num % i == 0){
    isPrime = false
    println (s"${num} 能被 ${i} 整除 ")
  }
  i += 1
}

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

结果如图:

屏幕截图 2025-09-24 100357.png

三. 案例-复利公式

题目描述:假设某人的年化投资回报率是10%。也就是说投入1元之后: 第一年结束时有1.1元,计算过程是:1 *(1+10%) = 1.1

第二年结束时有1.21元,计算过程是:1.1*(1+10%) = 1.21元,

第三年结束时有1.331元,计算过程是:1.21*(1+10%) = 1.331元,

编写程序:

1、求它第10年结束时有多少元?

2、多少年之后能超过1000元?


// 1、求它第10年结束时有多少元?
var i = 0
var money = 1.0 // 本金
while (i < 10){
  money = money + 1.1
  i = i + 1
  println(s"第${i}年结束时,钱数为${money}")
}

// 2、多少年之后能超过1000元?
while (money <= 1000){
  money = money * 1.1
  i = i + 1
  println(s"第${i}年结束时,钱数为${money}")
}
println(i)

结果如图:

屏幕截图 2025-09-24 113315.png

屏幕截图 2025-09-24 113323.png