如何从 Java 中的一组数字中找到完全平方数?

所以我试图找出一组数字中的完美平方。我声明了必要的变量,添加了一个 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);

    }


}

这只是整个作业中的一部分代码,因此如果您需要更多代码,那么我非常愿意提供。谢谢!


幕布斯7119047
浏览 217回答 2
2回答

米脂

完美平方是一个可以表示为两个相等整数的乘积的数字,因此它的 sqrt 后面必须是 int。如果您这样做,sqroot*sqroot == num您只是检查 sqrt 是否正常工作。因此,有些号码无法通过检查,但通常情况下,您会得到比您想要的更多的号码。所以你需要做的只是检查 sqrt 之后的结果是否是一个 int:if (sqrootd % 1 == 0) { ... }您可以做的优化是检查 sqrt 之前的数字是否为整数。除此之外,你的代码对我来说看起来不错

智慧大石

我使用以下数学公式来找到完美的平方:1 + 3 + 5 + 7 .... = n ^ 2例如:1 + 3 + 5 = 9 = 3 ^ 2和示例代码:&nbsp; &nbsp;int i = 1;&nbsp; &nbsp; while (num > 0) {&nbsp; &nbsp; &nbsp; &nbsp; num = num - i;&nbsp; &nbsp; &nbsp; &nbsp; i = i + 2;&nbsp; &nbsp; }&nbsp; &nbsp; return num == 0;

缥缈止盈

检查平方根是否为整数的最佳方法,您将需要以下条件if ((sqroot - Math.floor(sqroot)) == 0){代替if(sqroot*sqroot == num){Math.sqrt() 方法查找给定数字的平方根,floor() 方法查找小于或等于参数的最大(最接近正无穷大)浮点值(这里是 sqrt 返回的平方根值) () 方法)并且等于一个数学整数。然后我们计算两者之间的差异来检查差异是否为零。对于完全平方数,该差值始终为零。原因是:完全平方数的平方根是整数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java