Untersuche diesen Code:
Scrolle nach unten für die nächste Aufgabe...
Verändere den Code so, dass geprüft wird, ob die eingegebene Zahl durch alle Zahlen zwischen 2 und 10 teilbar ist.
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();
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.
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();
Ä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 = ||)
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();
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.
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();
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.
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();