Java 如何创建贯穿方形棱锥体方程的循环
对Java来说是相当陌生的。我试图创建代码,找出哪一个本身就是一个完美的正方形 方形棱锥体数基本上是指层数为n的棱锥体中球的总数。我在找n,它的球总数是一个完美的正方形。我已经从数学上算出了它(只有两个n值有效——1和24,分别产生1和4900的平方金字塔数),但我不知道如何编写代码来自动算出它 这是我现在拥有的代码,需要在n中输入整数才能找到答案。我想弄清楚如何做一个循环,它会自己产生1和24的答案Java 如何创建贯穿方形棱锥体方程的循环,java,loops,for-loop,math,perfect-square,Java,Loops,For Loop,Math,Perfect Square,对Java来说是相当陌生的。我试图创建代码,找出哪一个本身就是一个完美的正方形 方形棱锥体数基本上是指层数为n的棱锥体中球的总数。我在找n,它的球总数是一个完美的正方形。我已经从数学上算出了它(只有两个n值有效——1和24,分别产生1和4900的平方金字塔数),但我不知道如何编写代码来自动算出它 这是我现在拥有的代码,需要在n中输入整数才能找到答案。我想弄清楚如何做一个循环,它会自己产生1和24的答案 class SquarePyramidalNumber { public static
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++;
}
现在,您的任务是用代码填充这两个方法:)我不完全理解您的答案。就像我说的,我对Java还很陌生。我上面的等式不够吗?我想我需要找到一个循环,当Math.sqrt(t)的结果是一个整数时,它会以某种方式终止。我走错方向了吗?我的代码用于查找我的答案,但它需要手动输入不同的n值,直到达到两个n值,其t的平方根是整数。我很抱歉没有完全理解你的答案。非常感谢您的回复!谢谢,这对我来说很有意义!我想我应该能从这里解决我的问题。再次感谢你,我真的很感激!