Scala用while求两个正整数的最小公倍数
时间: 2023-05-31 15:04:12 浏览: 102
```
def gcd(a: Int, b: Int): Int = {
var x = a
var y = b
while (y != 0) {
val r = x % y
x = y
y = r
}
x
}
def lcm(a: Int, b: Int): Int = {
(a * b) / gcd(a, b)
}
```
解释:
- `gcd` 函数实现辗转相除法求两个数的最大公约数。
- `lcm` 函数先求出两个数的乘积,再除以它们的最大公约数,得到最小公倍数。
相关问题
使用Scala语言用while语句写一个输入两个正整数m和n,求最大公约数和最小公倍数
import scala.io.StdIn._
println("请输入两个正整数:")
val m = readInt()
val n = readInt()
var a = m
var b = n
while (b != 0) {
val temp = a % b
a = b
b = temp
}
val gcd = a
val lcm = m * n / gcd
println(s"最大公约数:$gcd")
println(s"最小公倍数:$lcm")
scala实现求最大公因数和最小公倍数
最大公因数可以使用欧几里得算法(辗转相除法)实现,代码如下:
```scala
def gcd(a: Int, b: Int): Int = {
if (b == 0) a else gcd(b, a % b)
}
```
最小公倍数可以使用最大公因数求解,代码如下:
```scala
def lcm(a: Int, b: Int): Int = {
a * b / gcd(a, b)
}
```
阅读全文