我需要为整数输出平方根的结果。
示例:
1 - 1
4 - 2
9 - 3
16 - 4...
最多961 - 31
...这是1000之前的最后一个平方根。
到目前为止,我有这个...但是,这显示所有数字的平方根直到1000,我想要全数字的平方根。
我该怎么办?
public class HelloWorld {
public static void main(String args[]) {
double i = 1;
do {
System.out.printf("%.0f\t%.0f\n", i, Math.sqrt(i));
i++;
} while (i <= 1000);
}
}
我想要的输出应该如下所示:
答案 0 :(得分:1)
可以解决您的请求的技巧也在Math类中,
Math.floor(...)
该方法会将double舍入到较低的整数,因此您需要检查根和下层是否相同..
for (int j = 0; j < 1000; j++) {
final double res = Math.sqrt(j);
if (res == Math.floor(res)) {
System.out.printf("%d\t%.0f\n", j, res);
}
}
答案 1 :(得分:1)
遍历所有1000个值并不高效。相反,请考虑以下代码:
for(int i = 1; i <= Math.sqrt(1000); i++) {
System.out.println(i*i + " - " + i);
}
答案 2 :(得分:0)
试试这个解决方案
for (int i = 1; i <= 1000; i++) {
double sqrt = Math.sqrt(i);
if (sqrt % 1 == 0) {
System.out.println(i + " " + (int) sqrt);
}
}
对于int值sqrt % 1
将等于零。
答案 3 :(得分:0)
您解决此问题的方法存在轻微缺陷。
NUL
....因此,你得到的最接近整数的是31平方,任何更大的都将大于1000 1000 => sqrt(1000) = 31.6
,但是你循环遍历(x) = x^2
值而不是x值,这将会产生更多的测试。我会这样做:
f(x)