2016-03-31 14 views
0

かなり新しいJavaに。私はsquare pyramidal numberがそれ自体完璧な広場であることを知るコードを作成しようとしています。方形ピラミッドの方程式を実行するループを作成する方法

四角形のピラミッド数は、基本的に、ピラミッド内の層番号nのボールの総数を指します。私はボールの総数が完璧な正方形であるnを探しています。私はそれを数学的に理解しました(1と24の2つの値しかありません - それぞれ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

まず、ピラミッドのボールの各レイヤーが完全な四角形のボール(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++; 
} 

は今、あなたのタスクは、コードで両方の方法を埋めるためにある:)

+0

私はあなたの答えを完全に理解していません。私が言ったように、私はJavaにとってかなり新しいです。上記の方程式は十分ではありませんか?私は、Math.sqrt(t)の結果が整数のときに何とか終了するループを見つける必要があると考えていました。私は間違った方向に行きますか?私のコードは私の答えを見つけるために働くが、tの平方根が整数であるnの2つの値に達するまで、手動で異なるnの値を入力する必要がある。私はあなたの答えをよく理解していないことをお詫びします。レスポンスありがとう! – kr3000

+0

編集した私の答え –

+0

ありがとう、これは私に多くの意味がある!私はここから私の問題を理解することができるはずだと思う。再び、ありがとう、本当にありがとう! – kr3000

関連する問題