【发布时间】:2016-04-15 19:10:22
【问题描述】:
我写了这个函数来求两个数(包括)之间的平方根数。
static int FindRoot(int no1, int no2) {
int res = 0;
for (int x = no1; x <= no2; x++) {
for (int y = 1; y <= no2; y++) {
if (y * y == x)
res++;
}
}
return res;
}
这会很好,但我在考虑它的性能。
因为在这种情况下,inner For loop 将从起始位置 (1) 开始执行,因此如果有人将较大的数字范围传递给该方法,将需要一些时间。
所以,我的问题是:
有没有其他方法可以找到更好的性能?
P.S.- 我不能使用Math.sqrt() 函数
【问题讨论】:
-
你的函数只适用于完美平方根?
-
您可以绕过规则并实施Newton's Method 来计算平方根...但这可能不是您想要的:P
-
我希望如此,它适用于我测试过的少数案例。有什么问题再帮我看看吧。
-
SamYounnou 有个好主意
-
当
y * y <= no2为假时,你也可以打破你的内循环
标签: java performance for-loop