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

时间:2016-03-31 20:02:04

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

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 个答案:

答案 0 :(得分: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++;
}

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