为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

幕布斯7119047 2023-08-23 17:12:59
所以我试图找出一组数字中的完美平方。我声明了必要的变量,添加了一个 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 之前的数字是否为整数。除此之外,你的代码对我来说看起来不错


查看完整回答
反对 回复 2023-08-23
?
智慧大石

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;


查看完整回答
反对 回复 2023-08-23
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

检查平方根是否为整数的最佳方法,您将需要以下条件

if ((sqroot - Math.floor(sqroot)) == 0){

代替

if(sqroot*sqroot == num){

Math.sqrt() 方法查找给定数字的平方根,floor() 方法查找小于或等于参数的最大(最接近正无穷大)浮点值(这里是 sqrt 返回的平方根值) () 方法)并且等于一个数学整数。

然后我们计算两者之间的差异来检查差异是否为零。对于完全平方数,该差值始终为零。原因是:完全平方数的平方根是整数。

查看完整回答
反对 回复 2023-08-23
  • 2 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信