Methoden Primzahltest

Kartoschka

Mitglied
In dieser Aufgabe werden Sie eine einfache Formel zur Überprufung von Primzahlen implementieren. Eine Primzahl ist eine natürliche Zahl großer als 1, welche nur durch sich selbst und durch 1 restlos teilbar ist. In der Praxis werden Primzahlen insbesondere bei asymmetrischen Verschlüsselungsverfahren wie zum Beispiel RSA eingesetzt.

Der einfachste Primzahltest ist es zu überprüfen, ob die zu testende Zahl durch alle positiven Zahlen größer als 1, welche kleiner als die zu testende Zahl sind, nicht restlos Teilbar ist. Für größere Zahlen ist dieser Algorithmus allerdings sehr ineffizient. Sie können jedoch davon ausgehen, dass die Zahl n in dieser Aufgabe hinreichend klein ist.

Implementieren Sie ein kleines Programm, das den oben genannten Algorithmus für eine gegebene positive Integer-Zahl n implementiert. Die Zahl n wird dem Programm als Kommandozeilenargument übergeben. Der Aufruf java PrimalityTest 11 setzt beispielsweise n auf den Wert 11. Stellen Sie in Ihrem Programm fest, ob die gegebene Zahl eine Primzahl ist oder nicht. Geben Sie am Ende Ihrer Berechnung die Antwort auf das Terminal aus. Dies bedeutet, handelt es sich bei der Zahl n um eine Primzahl, wird true auf dem Terminal ausgegeben, andernfalls false. Dazu können Sie die Methode System.out.println() nutzen. In dieser Aufgabe können Sie davon ausgehen, dass alle Eingaben gültig sind. Somit dürfen Sie annehmen, dass die Zahl n eine positive Integer-Zahl größer als 1 ist.

Mein Code:
Java:
public class PrimalityTest {
public static void main(String[] args) {    
    int j = 2;
    int result = 0;
    int n = 0;
    n = Integer.parseInt(args[0]);
    while (j <= n / 2)
    {
        if (n % j == 0)
        {
           result = 1;
        }
        j++;
    }
    if (result == 1)
    {
        System.out.println("false");
    }
    else
    {
        System.out.println("true");
    }
}
}

Der Code funktioniert für n>1 aber wenn ich java PrimalityTest 1 ausführe, kommt immer true raus, obwohl 1 ja keine Primzahl ist. Wie muss ich den Code umschreiben, dass auch für n=1 false gilt?
 

Kartoschka

Mitglied
Ok ich habe den Code verändert aber es liefert immer noch true.

Java:
public class PrimalityTest {
public static void main(String[] args) {    
    int j = 2;
    int result = 0;
    int n = 0;
    n = Integer.parseInt(args[0]);
    while (j <= n / 2)
    {
    if(n==1) {
    System.out.println("false");
    }
        if (n % j == 0)
        {
           result = 1;
        }
        j++;
    }
    if (result == 1)
    {
        System.out.println("false");
    }
    else
    {
        System.out.println("true");
    }
}
}
 

Kartoschka

Mitglied
Ich habe das Problem gelöst.

Die Zeile
Java:
if(result == 1)

habe ich durch
Java:
if (result == 1 || n==1)
ersetzt.
 

Ähnliche Java Themen

Neue Themen


Oben