Gaußsche Summenformel

Zeppi

Zeppi

Mitglied
Moin,
ich hoffe, dass ich mein Anliegen in die richtige Abteilung geschrieben habe. Meine Frage lautet, wie man ein Programm schreibt, in dem man zwei Zahlen hat und davon alle Zahlen dazwischen addiert inklusive der 1. und 2. Zahl. Dafür habe ich den Code geschrieben, mit der Gaußschen Summenformel, aber anscheinend habe ich etwas falsch gemacht. Also an sich funktioniert es, aber jedesmal startet er bei 1, egal welche Zahl ich eingebe. Hat jemand ein Tipp und kann mir erklären, was ich falsch mache, oder was ich übersehe?

Danke im Vorraus :D

Java:
package test1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class informatik_aufgabe2 extends Object {
    public static void main (String [] args) throws IOException {
        
        InputStreamReader isr = new InputStreamReader (System.in);
        BufferedReader br = new BufferedReader(isr);
        
        String eingabe = br.readLine();
        int n = Integer.parseInt(eingabe);   
        
        String eingabe2 = br.readLine();
        int ende = Integer.parseInt(eingabe2);
          
           int ergebnis = 0;
          
           for (n=n;n<=ende;n++)  {
            
               ergebnis = (n*(n+1))/2;
           }
           System.out.println("Die Summe der Zahlen von bis "+ende+" ist "+ergebnis);
           }
           }
 
Zuletzt bearbeitet:
mihe7

mihe7

Top Contributor
Entweder summierst Du auf, oder berechnest das Ergebnis direkt, beides gleichzeitig ist ungünstig :)

Zum Beispiel:
Java:
for (int i = n; i <= ende; i++) {
    ergebnis += i;
}
 
Zeppi

Zeppi

Mitglied
Entweder summierst Du auf, oder berechnest das Ergebnis direkt, beides gleichzeitig ist ungünstig :)

Zum Beispiel:
Java:
for (int i = n; i <= ende; i++) {
    ergebnis += i;
}

Danke : 😊
Aber gebe es auch eine Möglichkeit, um: ergebnis = (n*(n+1))/2; zu benutzen?
Und was genau wird bei ergebnis +=i; gerechnet?
 
BestGoalkeeper

BestGoalkeeper

Top Contributor
beides gleichzeitig ist ungünstig
ginge aber auch ;)
Java:
        int a = 5, b = 15, n = b - a + 1;
        double sum = 0;
        double cv = 0;
        for (int i = a; i <= b; i++) {
            sum += (b * (b + 1) - (a - 1) * a) / 2.0 / n;
            cv += i;
        }
        System.out.println(sum);
        System.out.println(cv);
        System.out.println((b * (b + 1) - (a - 1) * a) / 2.0);
 
mihe7

mihe7

Top Contributor
Und was genau wird bei ergebnis +=i; gerechnet?
Erhöhe ergebnis um i, also ergebnis = ergebnis + i.

Aber gebe es auch eine Möglichkeit, um: ergebnis = (n*(n+1))/2; zu benutzen?

Naja, die Summe der Zahlen im Intervall [m,n] ist ja nichts anderes als die Summe der Zahlen im Intervall [1,n] abzgl. der Summe der Zahlen im Intervall [1,m-1]. Und jetzt darfst Du rechnen, dann hast Du einen Einzeiler :)
 
Zeppi

Zeppi

Mitglied
Erhöhe ergebnis um i, also ergebnis = ergebnis + i.



Naja, die Summe der Zahlen im Intervall [m,n] ist ja nichts anderes als die Summe der Zahlen im Intervall [1,n] abzgl. der Summe der Zahlen im Intervall [1,m-1]. Und jetzt darfst Du rechnen, dann hast Du einen Einzeiler :)
Danke, dass ergibt Sinn 👍
 
mihe7

mihe7

Top Contributor

:)
 

Ähnliche Java Themen

Anzeige

Neue Themen


Oben