【问题标题】:How to create loop that runs through Square Pyramidal equation如何创建贯穿方形金字塔方程的循环
【发布时间】:2023-03-26 19:18:01
【问题描述】:

Java 新手。我正在尝试创建代码来找出哪个 square pyramidal number 本身就是一个完美的正方形。

方形金字塔数基本上是指层数为n的金字塔中球的总数。我正在寻找 n ,其球的总数是一个完美的正方形。我已经从数学上算出来了(只有两个 n 值有效——1 和 24,它们分别产生一个 1 和 4900 的方锥体数),但我不知道如何编写可以计算的代码自动退出。

这是我现在拥有的代码,需要在 n 中输入整数才能找到答案。我正在尝试弄清楚如何制作一个循环,它自己会产生 1 和 24 的答案。

class SquarePyramidalNumber
{
    public static void main(String[] args)
    {
        double t,n=24;
        t=(n*(n+1)*(2*n+1))/6;
        System.out.println("\n");
        System.out.println("Layer number = " + n );
        System.out.println("Number of balls in layer = " + n*n );
        System.out.println("Total number of balls = " + t );
        System.out.println("Square root of total number of balls = " + Math.sqrt(t) );
        System.out.println("\n");
    }
}

希望我能很好地解释自己!感谢您的所有帮助。

【问题讨论】:

    标签: java loops for-loop math perfect-square


    【解决方案1】:

    首先,您会注意到金字塔中的每一层球都是由若干个完美正方形的球组成的(1、4、9、16,...) 所以一个金字塔的球总数,假设有 n 个球, 金字塔编号将是

    n + 
    (sqrt(n)-1)^2 +
    (sqrt(n)-2)^2 +
    .. +
    1
    

    所以,首先要解决您的问题。首先,你要知道一个数字是否是一个金字塔,所以让我们创建一个这样的方法:

    private boolean isPyramid(int n) 
    

    你还必须知道一个数字是否是一个完美的正方形:

    private boolean isPerfectSquare(int n)
    

    填写完这些方法后,您可以循环查找同时满足这两个条件的数字:

    int i=1;
    while(true){ //this will run forever so be careful
      if (isPyramid(i) && isPerfectSquare(i)){
        System.out.println("Found one! "+i);
      }
      i++;
    }
    

    现在,你的任务是用代码填充这两个方法:)

    【讨论】:

    • 我没有完全理解你的回答。就像我说的,我对 Java 还是很陌生。我上面的方程式还不够吗?我在想我需要找到一个当 Math.sqrt(t) 的结果是整数时以某种方式终止的循环。我走错方向了吗?我的代码可以找到我的答案,但它需要手动输入不同的 n 值,直到达到两个 t 的平方根为整数的 n 值。对于没有完全掌握您的答案,我深表歉意。非常感谢您的回复!
    • 谢谢,这对我来说很有意义!我想我应该能够从这里找出我的问题。再次感谢您,我真的很感激!
    猜你喜欢
    • 2015-12-14
    • 2016-11-21
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 2013-05-09
    相关资源
    最近更新 更多