0

Java 很新。我正在尝试创建代码来找出哪个正方形金字塔数字本身就是一个完美的正方形。

方锥数基本上是指层数为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");
    }
}

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

4

1 回答 1

0

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

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

于 2016-03-31T20:20:05.120 回答