Informatik

Der Modulo-Operator

Untersuche diesen Code:

  1. Durch welchen Operator wird der Rest einer ganzzahligen Division ermittelt?
  2. Mit welcher Methode der Klasse String wird eine int-Variable in eine Zeichenkette umgewandelt?
  3. Was bewirkt der "+"-Operator bei Zeichenketten?

Scrolle nach unten für die nächste Aufgabe...

2024 Rainer Hille Unter Verwendung der Online-IDE von Martin Pabst
Hinweis: Der Code-Editor muss erst geladen werden. Klicke ggf. auf Code Reset um den Programmcode neu zu laden.

Teilbarkeit durch 2 bis 10

Verändere den Code so, dass geprüft wird, ob die eingegebene Zahl durch alle Zahlen zwischen 2 und 10 teilbar ist.

2024 Rainer Hille Unter Verwendung der Online-IDE von Martin Pabst
Hinweis: Der Code-Editor muss erst geladen werden. Klicke ggf. auf Code Reset um den Programmcode neu zu laden.

Lösungsvorschlag

Scrolle nach unten für die nächste Aufgabe...

public class Zahlen {

   public Zahlen() {
      rechnen();
   }

   public void rechnen() {
      int zahl = Input.readInt("Geben Sie eine Zahl ein:");
      for (int teiler = 2; teiler < 11; teiler = teiler + 1) {
         int rest = zahl % teiler;
         System.out.println("Wir untersuchen die Zahl " + String.valueOf(zahl));
         System.out.println("auf die Teilbarkeit durch " + String.valueOf(teiler) + ".");
         System.out.println("Der Rest beträgt: " + String.valueOf(rest));
      }
   }
  
}

new Zahlen();

Verbesserte Ausgabe

Die Ausgabe unseres Systems ist sehr unübersichtlich.
Verbessere den Code so, dass nur noch dann ein Text ausgegeben wird, wenn eine Zahl durch einen bestimmten Teiler teilbar ist.
Die Ausgabe soll zum Beispiel so aussehen:

Geben Sie eine Zahl ein:  
15  
Wir untersuchen die Zahl 15  
Sie ist durch 3 teilbar.  
Sie ist durch 5 teilbar.   
2024 Rainer Hille Unter Verwendung der Online-IDE von Martin Pabst
Hinweis: Der Code-Editor muss erst geladen werden. Klicke ggf. auf Code Reset um den Programmcode neu zu laden.

Lösungsvorschlag

public class Zahlen {

   public Zahlen() {
      rechnen();
   }

   public void rechnen() {
      int zahl = Input.readInt("Geben Sie eine Zahl ein:");
      System.out.println("Wir untersuchen die Zahl " + String.valueOf(zahl));
      for (int teiler = 2; teiler < 11; teiler = teiler + 1) {
         int rest = zahl % teiler;
         if(rest == 0) {
            System.out.println("Sie ist durch " + String.valueOf(teiler) + " teilbar.");
         }
      }
   }
}

new Zahlen();

Nur noch Zahlen bis 99

Ändere den Code so ab, dass nur noch Zahlen zwischen 2 und 99 akzeptiert werden.
Verwende hierzu eine While-Schleife und eine logische Verknüpfung (UND = &&, ODER = ||)

2024 Rainer Hille Unter Verwendung der Online-IDE von Martin Pabst
Hinweis: Der Code-Editor muss erst geladen werden. Klicke ggf. auf Code Reset um den Programmcode neu zu laden.

Lösungsvorschlag


public class Zahlen {

   public Zahlen() {
      rechnen();
   }

   public void rechnen() {
      int zahl = Input.readInt("Geben Sie eine Zahl zwischen 2 und 99 ein:");
      while (zahl > 99 || zahl < 2) {
         zahl = Input.readInt("Geben Sie eine Zahl zwischen 2 und 99 ein:");
      }
      System.out.println("Wir untersuchen die Zahl " + String.valueOf(zahl));
      for (int teiler = 2; teiler < 11; teiler = teiler + 1) {
         int rest = zahl % teiler;
         if(rest == 0) {
            System.out.println("Sie ist durch " + String.valueOf(teiler) + " teilbar.");
         }
      }
   }
}

new Zahlen();

Primzahlerkennung

Mit dem bisherigen Programm können wir relativ leicht erkennen, ob es sich bei der eingegebenen Zahl um eine Primzahl handelt.
Ändere das Programm so ab, dass am Ende ausgegeben wird, ob es sich bei der Zahl um eine Primzahl handelt.

2024 Rainer Hille Unter Verwendung der Online-IDE von Martin Pabst
Hinweis: Der Code-Editor muss erst geladen werden. Klicke ggf. auf Code Reset um den Programmcode neu zu laden.

Lösungsvorschlag

public class Zahlen {

   public Zahlen() {
      rechnen();
   }

   public void rechnen() {
      boolean primzahl = true;
      int zahl = Input.readInt("Geben Sie eine Zahl zwischen 2 und 99 ein:");
      while (zahl > 99 || zahl < 2) {
         zahl = Input.readInt("Geben Sie eine Zahl zwischen 2 und 99 ein:");
      }
      System.out.println("Wir untersuchen die Zahl " + String.valueOf(zahl));
      for (int teiler = 2; teiler < zahl; teiler = teiler + 1) {
         int rest = zahl % teiler;
         if(rest == 0) {
            // Es muss nicht geprüft werden, ob der Teiler gleich der Zahl ist,
            // da die Schleife abbricht, bevor zahl erreicht wird.
            System.out.println("Sie ist durch " + String.valueOf(teiler) + " teilbar.");
            primzahl = false;
         }
      }
      if(primzahl) {
         System.out.println("Sie ist eine Primzahl!");
      }
   }
}

new Zahlen();

Bewertung des Primzahl-Algorithmus

Das Programm erkennt die Primzahlen zwischen 2 und 99 sicher. Allerdings benötigt der Algorithmus vor allem bei größeren Zahl zu viel Zeit dazu.
Erläutere, weshalb für die Erkennung der Primzahlen zu viele Tests durchgeführt werden und passe den Code so an, dass er möglichst wenig Teiler prüft und Primzahlen erkennt.
Die Ausgabe könnte zum Beispiel so aussehen:

Geben Sie eine Zahl ein:
98
Wir untersuchen die Zahl 98
Sie ist durch 2 teilbar.
2024 Rainer Hille Unter Verwendung der Online-IDE von Martin Pabst
Hinweis: Der Code-Editor muss erst geladen werden. Klicke ggf. auf Code Reset um den Programmcode neu zu laden.

Lösungsvorschlag

public class Zahlen {

   public Zahlen() {
      rechnen();
   }

   public void rechnen() {
      boolean primzahl = true;
      int zahl = Input.readInt("Geben Sie eine Zahl zwischen 2 und 99 ein:");
      while (zahl > 99 || zahl < 2) {
         zahl = Input.readInt("Geben Sie eine Zahl zwischen 2 und 99 ein:");
      }
      System.out.println("Wir untersuchen die Zahl " + String.valueOf(zahl));
      for (int teiler = 2; teiler < zahl; teiler = teiler + 1) {
         int rest = zahl % teiler;
         if(rest == 0) {
            // Es muss nicht geprüft werden, ob der Teiler gleich der Zahl ist,
            // da die Schleife abbricht, bevor zahl erreicht wird.
            System.out.println("Sie ist durch " + String.valueOf(teiler) + " teilbar.");
            primzahl = false;
            teiler = 99;
         }
      }
      if(primzahl) {
         System.out.println("Sie ist eine Primzahl!");
      }
   }
}

new Zahlen();

Weitere Übungsaufgaben auf LearnJ