【发布时间】:2015-02-07 18:03:01
【问题描述】:
如何有效地找到小于给定 int n 的最大平方数(即 4、9、16)?我有以下尝试:
int square = (int)Math.sqrt(number);
return square*square;
但它显然效率低下,只是为了让我们可以平方它而求平方根。
【问题讨论】:
-
@hatchet 不,关键是我不想要它的整数部分。我想直接去平方数。
-
需要 s/小于 n/不大于 n/g 以使您的代码正确。
-
@Deduplicator 看起来很粗略,但是 int->double 转换是准确的,而且 Math.sqrt 保证被正确四舍五入,所以可以做错误分析表明我们从来没有正确四舍五入 up 到一个整数(这是截断可能出错的唯一方法)。
标签: java algorithm math square-root