next up previous contents
Nächste Seite: Verschlüsseln und Entschlüsseln von Aufwärts: Lesen aus Textdateien Vorherige Seite: Daten aus einer Textdatei   Inhalt

Große Primzahlen analysieren

Im nächsten Beispiel (zahlen.java) soll die Häufigkeit von Zahlen ermittelt werden. Sind solche Zahlen zufällig verteilt, sollte jede Zahl gleich häufig auftreten. Wir untersuchen dies an Hand der zur Zeit größten Primzahl (vgl. http://www.mersenne.org).

import java.io.*;

public class zahlen {

    public static void main (String args[]) throws IOException {
        info();
        try {
            zaehlen();
        }
        catch (Exception ausnahme) {
            System.out.println("Datei nich da");
        }

    }

    public static void info() {
        System.out.println("Die Häufigkeiten der Ziffern in einer zufälligen Zahlenfolge werden ermittelt...");
    }

    public static void zaehlen() throws Exception {
        File f = new File("prime0.txt");
        int ergebnis[] = new int[10];
        
        for (int i=0;i<ergebnis.length;i++) ergebnis[i]=0;

        try {
            FileReader fr = new FileReader(f);
            BufferedReader eingabe = new BufferedReader(fr);
            String reihe = eingabe.readLine();
            while (reihe != null) {
                for (int i=0; i<reihe.length();i++) 
                    for (int z=0; z<10; z++) 
                        if (((int) reihe.charAt(i) - 48) == z) ergebnis[z]++;
                reihe = eingabe.readLine();
            }
        }
        
        catch (FileNotFoundException ausnahme) {
            System.out.println("Datei nich da");
        }
        for (int z=0; z<10;z++) {
            System.out.print("Häufigkeit von " + z + ": ");
            System.out.println(ergebnis[z]);
        }
    }
}
Die größte Primzahl liegt in einem TextFile vor, in dem die Ziffern dieser (riesigen) Zahl in Zeilen zu je 80 Zeichen gespeichert ist. Wir untersuchen zuerst die ersten 23 Zeilen dieser Datei (``prime0.txt'') und erhalten die folgende Ausgabe:
Häufigkeit von 0: 180
Häufigkeit von 1: 170
Häufigkeit von 2: 159
Häufigkeit von 3: 158
Häufigkeit von 4: 184
Häufigkeit von 5: 184
Häufigkeit von 6: 179
Häufigkeit von 7: 199
Häufigkeit von 8: 160
Häufigkeit von 9: 152
Bei der Durchmusterung der kompletten Primzahl (``prime5.txt'') fällt auf, dass alle Ziffern praktisch gleich häufig auftreten:
Häufigkeit von 0: 405083
Häufigkeit von 1: 405614
Häufigkeit von 2: 405068
Häufigkeit von 3: 405928
Häufigkeit von 4: 405491
Häufigkeit von 5: 404915
Häufigkeit von 6: 405154
Häufigkeit von 7: 405308
Häufigkeit von 8: 406672
Häufigkeit von 9: 404713

Wie viele Zahlen hat die derzeit größte Primzahl? Wie viele Seiten der Tageszeitung ``Die Presse'' könnten damit - schätzungsweise - bedruckt werden?

Anmerkung: Zufallszahlen spielen ebenso wie große Primzahlen eine bedeutende Rolle für moderne Verschlüsselungsverfahren.



Alfred Nussbaumer 2003-02-10