2016-03-31 23 views
0

Java'dan oldukça yeni. Hangi square pyramidal number'un kendisinin mükemmel bir kare olduğunu öğrenen bir kod oluşturmaya çalışıyorum. Kare piramidal sayısı temel olarak, bir n katmanı sayısına sahip olan bir piramidin toplam top sayısı anlamına gelir. Toplam top sayısı mükemmel bir kare olan n'yi arıyorum. Matematiksel olarak anladım (bu çalışma için sadece iki değer var - 1 ve 24, sırasıyla 1 ve 4900'lük bir kare piramidal sayı üretiyor), ama ne yapacağımı bilmiyorum otomatik olarak dışarı.Square Pyramidal denklemi üzerinden geçen döngü nasıl oluşturulur

Şu anda sahip olduğum kod, cevabınızı bulmak için n'ye n girişini girmeyi gerektirir. Kendi başına 1 ve 24'ün cevaplarını üretecek bir döngü yapmayı nasıl anlamaya çalışıyorum.

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

Umarım kendimi iyi anladım! Her türlü yardım için teşekkür ederim.

cevap

0

Her şeyden önce, piramidin içindeki her bir top katmanının mükemmel bir kare (1, 4, 9, 16, ...) olan toplam sayılarla oluşturulduğunu göreceksiniz. bir tabanı olan bir piramidin topları n topları Diyelim ki, piramit numarası

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

Yani, sorununuzu bölerek başlamak olacak. Her şeyden önce, bir numara bir piramit olup olmadığını bilmek zorunda, o yüzden böyle bir yöntem yapalım:

private boolean isPerfectSquare(int n) 

:

private boolean isPyramid(int n) 

Ayrıca bir sayı mükemmel bir kare olmadığını bilmek zorunda bu yöntemleri doldurduktan sonra, sadece döngü olabilir ve her iki koşulu yerine sayılar için bak:

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

Şimdi, görev koduyla iki yöntem :)

doldurmaktır
+0

Cevabınızı tam olarak anlamadım. Dediğim gibi, Java için oldukça yeni. Yukarıdaki denklem yeterli değil mi? Math.sqrt (t) 'nin sonucu bir tamsayı olduğunda bir şekilde sona eren bir döngü bulmam gerektiğini düşünüyordum. Yanlış yöne mi gidiyorum? Kodum cevabımı bulmaya çalışır, ancak n'nin karekökü bir tamsayı olan iki n değerine ulaşana kadar n farklı değerlerini elle girmeyi gerektirir. Cevabını tam olarak anlamadığım için özür dilerim. Yanıt için çok teşekkür ederim! – kr3000

+0

cevabımı düzenledim –

+0

Teşekkür ederim, bu bana çok şey ifade ediyor! Sanırım problemimi buradan çözebilmeliyim. Yine, teşekkür ederim, gerçekten takdir ediyorum! – kr3000