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");
}
}
希望我能很好地解释自己!感谢您的帮助。
答案 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++;
}
现在,您的任务是使用代码填充两种方法:)