所以我试图找出一组数字中的完美平方。我声明了必要的变量,添加了一个 for 循环,添加了一个sqroot = Math.sqrt(num)和一个 print 方法来列出数字。我不明白的是如何让程序挑选出数字范围内的完美方块,并找到它们的平均值?这是我正在为班级做的一项作业,我已经坚持了一段时间了。我对 Java 也很陌生,如果这是一个愚蠢的问题,我很抱歉。代码如下:public class Test { public static void main(String[] args) { int num; double sqroot = 0; int sumPsq = 0; //sum variable int psq = 0; //counter for perfect squares double avg = 0; for(num = 101; num <= 149; num += 2){ sqroot = Math.sqrt(num); if(sqroot*sqroot == num){ //Condition to find perfect squares psq += 1; //counting perfect squares sumPsq = sumPsq + num; //Find the sum of all the perfect squares System.out.println(num); //Print out the perfect squares } } avg = 1.0 * sumPsq/psq; System.out.println(avg); }}这只是整个作业中的一部分代码,因此如果您需要更多代码,那么我非常愿意提供。谢谢!
2 回答
米脂
TA贡献1836条经验 获得超3个赞
完美平方是一个可以表示为两个相等整数的乘积的数字,因此它的 sqrt 后面必须是 int。如果您这样做,sqroot*sqroot == num
您只是检查 sqrt 是否正常工作。因此,有些号码无法通过检查,但通常情况下,您会得到比您想要的更多的号码。
所以你需要做的只是检查 sqrt 之后的结果是否是一个 int:
if (sqrootd % 1 == 0) { ... }
您可以做的优化是检查 sqrt 之前的数字是否为整数。除此之外,你的代码对我来说看起来不错
智慧大石
TA贡献1946条经验 获得超3个赞
我使用以下数学公式来找到完美的平方:
1 + 3 + 5 + 7 .... = n ^ 2
例如:1 + 3 + 5 = 9 = 3 ^ 2
和示例代码:
int i = 1;
while (num > 0) {
num = num - i;
i = i + 2;
}
return num == 0;
缥缈止盈
TA贡献2041条经验 获得超4个赞
检查平方根是否为整数的最佳方法,您将需要以下条件
if ((sqroot - Math.floor(sqroot)) == 0){
代替
if(sqroot*sqroot == num){
Math.sqrt() 方法查找给定数字的平方根,floor() 方法查找小于或等于参数的最大(最接近正无穷大)浮点值(这里是 sqrt 返回的平方根值) () 方法)并且等于一个数学整数。
然后我们计算两者之间的差异来检查差异是否为零。对于完全平方数,该差值始终为零。原因是:完全平方数的平方根是整数。
添加回答
举报
0/150
提交
取消