【发布时间】:2020-10-16 11:35:59
【问题描述】:
我正在编写一个递归函数来检查非负整数是否是 SCALA 中的素数。我的函数需要两个输入来做到这一点。这是我的代码:
import io.StdIn._
def isPrime (x:Int, i:Int): Boolean = {
if (i < 3) {
true
}else if (x % i == 0) {
false
}else{
isPrime(x,i-1)
}
}
print("Enter a number to check if it is a prime number: " )
val num1 = readInt()
println(isPrime(num1,num1-1))
我的问题是有没有办法让我将一个输入作为函数的参数?代码必须使用递归函数。我知道有更有效的方法来检查一个数字是否为素数(也许使用迭代),但我只是将其作为练习题。
【问题讨论】:
-
定义有效。您可以预先计算素数然后检查缓存,您可能想要搜索不存在缓存的数字,您可以在内存限制下操作或完全优化速度。根据要求,我们可以回答。
-
我认为你的函数调用 4 素数。
-
如果你在谈论时间复杂度,我建议你只将数字除以它的 sqrt,否则你也可以寻找eratosthenes的筛子。