001 package de.hska.java.aufgaben.kontrollstrukturen;
002
003 /**
004 * Überprüft die Goldbachsche Vermutung mit einem brute-force Verfahren.
005 *
006 * <p>
007 * <a href="http://www.home.hs-karlsruhe.de/~pach0003/informatik_1/aufgaben/kontrollanweisungen.html#goldbach">Zurück zum Aufgabentext</a>
008 * </p>
009 * @author Christian Pape
010 *
011 */
012 public class GoldbachscheVermutung {
013
014 private Primzahlsieb primzahlsieb;
015
016 private int n;
017
018 public GoldbachscheVermutung(int n) {
019 primzahlsieb = new Primzahlsieb(n);
020 this.n = n;
021 }
022
023 /**
024 * Überprüft die Goldbachsche Vermutung, indem für jede Zahl z
025 * potentiell alle Kombinationen von Primzahlen p1,p2 < z ausprobiert werden.
026 */
027 public void vermutungUeberpruefen() {
028 primzahlsieb.primzahlenBerechnen();
029
030 for (int zahl = 4; zahl <= n; zahl += 2) {
031 System.out.print(zahl + " überprüfen:");
032 primzahlPaarSuchen:
033 for (int p1 = 2; p1 < zahl; p1++) {
034 for (int p2 = 2; p1 + p2 <= zahl; p2++) {
035 if ( primzahlsieb.isPrim(p1)
036 && primzahlsieb.isPrim(p2) ) {
037 if (p1 + p2 == zahl) {
038 System.out.println(zahl + " = " + p1 + " + " + p2);
039 break primzahlPaarSuchen;
040 }
041 }
042 }
043 }
044 }
045 }
046
047 public static void main(String [] argv) {
048 GoldbachscheVermutung vermutung = new GoldbachscheVermutung(10000);
049 vermutung.vermutungUeberpruefen();
050 }
051 }