// Summe.java MM 2010 // Optimierung der Rechenzeit // Numerische Fehler durch Datendarstellung import Tools.IO.*; // Eingaben /** * Programm berechnet die Summe der ersten * n natuerlichen Zahlen mittels verschiedener * Verfahren. */ public class Summe { /* ------------------------------------------------- */ // service-Methoden /** * Berechnen der Summe von 0 bis n. * @param n letzter Summand * @return Summe 0 bis n (0 fuer n < 1) */ public long summe( long n) { long summe = 0; for( long i = 1; i < n + 1; i++) { summe += i; } return summe; } /** * Gauss-Formel, berechnet Summe von 0 bis n. * @param n letzter Summand * @return Summe 0 bis n (0 fuer n < 1) */ public long gauss( long n) { long summe = 0; // Summenformel nach Gauss return summe; } /* ------------------------------------------------- */ /** * Startet das Programm, * erzeugt Summe bis zu einer eingelesenen Zahl. */ public static void main( String[] args) { // Eingaben von n long n = IOTools.readLong( "Summe von 0 bis "); // n im kritischen Bereich // long n = (long)Math.pow( 2.0, 32.0) - 1; // long n = (long)Math.pow( 2.0, 32.0); System.out.println( "Summe von 0 bis " + n); System.out.println ( "Berechnung kann einige Sekunden dauern!"); // Objekterzeugung Summe s = new Summe(); // Summenberechnung und Ausgabe System.out.println ( "Schleife : " + s.summe( n)); System.out.println ( "Gauss : " + s.gauss( n)); // Fertig System.out.println( "Programm beendet"); } } /* ------------------------------------------------- */ // Testergebnisse // Summe von 0 bis 4294967295 // Summe von 0 bis 4294967296