001    package de.hska.java.aufgaben.kontrollstrukturen;
002    
003    
004    /**
005     * Zur Ausgabe aller Primzahlzwillinge bis zu einer Obergrenze.
006     * Zwei Primzahlen p und q sind Primzahlzwillinge, wenn Ihre Differenz
007     * 2 ist. Die Berechnung der Primzahl wird an {@link Primzahlsieb} delegiert.
008     * 
009     * <p>
010     *   <a href="http://www.home.hs-karlsruhe.de/~pach0003/informatik_1/aufgaben/kontrollanweisungen.html#primzahl_zwillinge">Zurück zum Aufgabentext</a>
011     * </p>
012     * 
013     * 
014     * @author Christian Pape
015     */
016    public class PrimzahlZwillinge {
017    
018            private Primzahlsieb primzahlsieb;
019            
020            private int n;
021    
022            public PrimzahlZwillinge(int n) {
023                    primzahlsieb = new Primzahlsieb(n);             
024                    this.n = n;
025            }
026            
027            /**
028             * Gibt alle Primzahlzwillinge zeilenweise auf dem Bildschirm aus.
029             */
030            public void printPrimzahlZwillinge() {
031                    primzahlsieb.primzahlenBerechnen();
032    
033                    int letztePrimzahl = 2;
034                    for (int p = 3; p <= n; p++) {
035                            if ( primzahlsieb.isPrim(p) ) {
036                                    if ( p - letztePrimzahl == 2 ) {
037                                            System.out.println(letztePrimzahl + " / " + p);
038                                    }
039                                    letztePrimzahl = p;
040                            }
041                    }
042            }
043            /**
044             * Hauptprogramm für die Ausgabe der Primzahlzwillinge
045             */
046            public static void main(String[] args) {
047                    PrimzahlZwillinge primzahlZwillinge = new PrimzahlZwillinge(1000);
048                    
049                    primzahlZwillinge.printPrimzahlZwillinge();
050            }
051    
052    }