Mathematik

Ich hoffe, es ist okay, wenn ich diesen Thread nutze, statt einen neuen aufzumachen, da ich ein mathematisches Problem habe:

Zahl prüfen, ob sie das Format (n^2 - n) / 2 hat.

Ich bekomme einen Array übergeben und möchte nun die Anzahl der Elemente überprüfen. Die Anzahl der Elemente muss dem Format (n^2 - n) / 2 entsprechen, wobei n eine natürlich (also nicht-negative ganze) Zahl ist.

Alternativ wäre zu lösen, ob mit der Anzahl gerade ein "gleichmäßiges" Dreieck von Zahlen zu füllen wäre, also etwa
Code:
   1
  2 3
 4 5 6
7 8 9 10
10 Zahlen würden so ein Dreieck füllen, wohingegen
Code:
   1
  2 3
 4 5 6
7 8
8 Zahlen dieses Dreieck nicht füllen würde.

Hoffe, das war etwas verständlich.. :-(
 
Zuletzt bearbeitet:
kann das überhaupt Stimmen?

6 füllt ein Dreieck - also müsste bei dir gelten:

6=(6^2-6)/2=(36-6)/2=30/2=15 damit gilt 6=15 was offensichtlich falsch ist.

das mit der quadratischen Gleichung ist relativ einfach:

Es muss dann gelten: n^2-n-2y=0 mit y der Anzahl der Elemente im Array. Diese quadratische gleichung läßt sich mit der Lösungsformel lösen.

Hier gilt:

n=(1+sqrt(1+8y))/2 bzw. n=(1-sqrt(1+8y))/2

Wenn eines der beiden n ganzzahlig ist, erfüllt y die Bedingung.

(ich hoffe ich hab mich hier nicht vertan, ist alles so lange her).
 
es sollte sogar reichen wenn sqrt(1+8y) ungerade ist.

Irgendetwas passt da noch nicht - ich komm blos nicht drauf.

Deine Formel ist falsch: die Zahl unten rechts im Dreieck erfüllt die Bedingung:

n*(n+1)/2 mit n=Anzahl der Reihen

so, jetzt richtig: mit y = Anzahl der Elemente im Array

n = (-1-sqrt(1+8y))/2 bzw. n = (-1+sqrt(1+8y))/2

Wenn n ganzzahlig ist, dann ist n eine der gesuchten Zahlen. Damit der Bruch ganzzahlig bleibt, muss gelten dass der Zähler gerade ist, damit muss sqrt(1+8y) ungerade sein.

Entschuldigt die etwas längliche Ausführung - ich kam durcheinander wegen der Angabe.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück