我写了一个检查数字是否为质数的方法:
static boolean isPrime(int x) {
for (int i = 2; i <= Math.sqrt(x); i++) {
if (x % i == 0)
return false;
}
return true;
}
在我们学习的一系列练习中,解决方案是:
static boolean isPrime(int x) {
boolean hasDivisors = false;
for (int i = 2; i <= Math.sqrt(x); i++) {
if (x % i == 0) {
hasDivisors = true;
break;
}
}
return !hasDivisors;
}
在我的情况下,如果我找到了一个除数,我会返回这个数不是素数(
return false
),这样就可以替代第二种方法中需要使用break
的步骤。另一个明显的原因是第二种方法只使用了一个return
语句。这么做是否有速度和内存方面的原因呢?