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 }