001 package de.hska.java.aufgaben.kontrollstrukturen;
002
003 import de.hska.java.aufgaben.rekursion.Primzahl;
004
005 /**
006 * Berechnet alle Giuga-Zahlen bis zu einer vorgegebenen Grenze.
007 * Eine natürliche Zahl z ist eine Giuga-Zahl, wenn
008 * alle Primteiler p von z die Zahl z/p - 1 teilen.
009 *
010 * <p>
011 * <a href="http://www.home.hs-karlsruhe.de/~pach0003/informatik_1/aufgaben/kontrollanweisungen.html#giuga">Zurück zum Aufgabentext</a>
012 * </p>
013 * @author Christian Pape
014 *
015 */
016 public class GiugaZahl {
017
018 /**
019 * Berechnet alle Giuga-Zahlen bis zu einer festen Obergrenze.
020 */
021 public static void main(String[] args) {
022 final int n = 1000;
023 Primzahlsieb sieb = new Primzahlsieb(n);
024
025 sieb.primzahlenBerechnen();
026 for (int zahl = 2; zahl <= n; zahl++) {
027 boolean giuga = true;
028 for (int primzahl = 2; primzahl <= zahl && giuga; primzahl++) {
029 if (sieb.isPrim(primzahl) && zahl % primzahl == 0) {
030 giuga = (((zahl / primzahl) - 1) % primzahl) == 0;
031 }
032 }
033 if (giuga) {
034 System.out.println(zahl + " ist eine Giuga-Zahl");
035 } else {
036 System.out.println(zahl + " ist keine Giuga-Zahl");
037 }
038 }
039 }
040
041 }