如何创建贯穿方形金字塔方程的循环

How to create loop that runs through Square Pyramidal equation

对 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");
    }
}

希望我解释清楚了!感谢您提供的所有帮助。

首先,你会注意到金字塔中的每一层球都是由许多球组成的,这些球是一个完美的正方形 (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++;
}

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