2016-03-31 13 views
0

Ziemlich neu in Java. Ich versuche Code zu erstellen, der herausfindet, welches square pyramidal number selbst ein perfektes Quadrat ist.Erstellen einer Schleife, die durch Quadrat läuft Pyramidengleichung

Die quadratische Pyramidenzahl bezieht sich im Wesentlichen auf die Gesamtzahl der Kugeln in einer Pyramide, die eine Lagenzahl von n hat. Ich suche nach n, deren Gesamtzahl an Bällen ein perfektes Quadrat ist. Ich habe es mathematisch herausgefunden (es gibt nur zwei Werte von n, die funktionieren - 1 und 24, die eine quadratische Pyramidenzahl von 1 bzw. 4900 ergeben), aber ich weiß nicht, wie man einen Code macht, der sich auszahlt es automatisch aus.

Dies ist der Code, den ich gerade habe, der die Eingabe von Ganzzahlen in n erfordert, um Ihre Antwort zu finden. Ich versuche herauszufinden, wie man eine Schleife erstellt, die die Antworten von 1 und 24 selbst erzeugt.

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"); 
    } 
} 

Hoffentlich habe ich mich gut erklärt! Danke für jede Hilfe.

Antwort

0

Zuerst werden Sie feststellen, dass jede Kugelschicht in der Pyramide durch eine Anzahl von Kugeln gebildet wird, die ein perfektes Quadrat ist (1, 4, 9, 16, ...) Also die Gesamtzahl von Kugeln einer Pyramide, die eine Basis, lässt Bälle sagen n hat, wird die Pyramide Nummer

n + 
(sqrt(n)-1)^2 + 
(sqrt(n)-2)^2 + 
.. + 
1 

Also, starten Sie durch Aufspalten Ihr Problem sein. Zunächst einmal müssen Sie wissen, ob eine Zahl eine Pyramide ist, also lassen Sie uns eine Methode wie folgt erstellen:

private boolean isPyramid(int n) 

Sie müssen auch wissen, ob eine Zahl eine Quadratzahl ist:

private boolean isPerfectSquare(int n) 

nachdem diese Methoden füllen, könnten Sie einfach Schleife und suchen Sie die Zahlen, die beide Bedingungen erfüllen:

int i=1; 
while(true){ //this will run forever so be careful 
    if (isPyramid(i) && isPerfectSquare(i)){ 
    System.out.println("Found one! "+i); 
    } 
    i++; 
} 

Nun ist es Ihre Aufgabe, beide Methoden mit Code zu füllen :)

+0

Ich verstehe Ihre Antwort nicht vollständig. Wie ich schon sagte, ich bin ziemlich neu in Java. Ist die obige Gleichung nicht ausreichend? Ich dachte, ich müsste eine Schleife finden, die irgendwie endet, wenn das Ergebnis von Math.sqrt (t) eine ganze Zahl ist. Gehe ich in die falsche Richtung? Mein Code funktioniert, um meine Antwort zu finden, aber Sie müssen manuell verschiedene Werte von n eingeben, bis Sie zwei Werte von n erreichen, deren Quadratwurzel aus t eine ganze Zahl ist. Ich entschuldige mich dafür, dass ich Ihre Antwort nicht ganz verstanden habe. Vielen Dank für die Antwort! – kr3000

+0

meine Antwort bearbeitet –

+0

Danke, das macht sehr viel Sinn für mich! Ich denke, ich sollte von hier aus mein Problem lösen können. Nochmals vielen Dank, ich schätze es wirklich! – kr3000

Verwandte Themen