lucas-test

hamster1989

Mitglied
Java:
public class aufgabe1

  public static void main(String[]  argv)  {
       int a =2, n, ergebnis2=1, ergebnis= 2, m=0, zwischenergebnis = 2;

  n= IO.readInt();
  while (a < n && ergebnis2 != 2) {
   
    while (m < n-1) {
        zwischenergebnis = zwischenergebnis * a;
        ergebnis = zwischenergebnis % n;
        m++;}
    a++;
    zwischenergebnis = a;
    if (ergebnis != 1) ergebnis2 = 2;}}}



Der Lucas Test operiert wie folgt:

Die eingegebene Zahl n > 2 ist prim, falls es eine ganze Zahl a mit 1 < a < n gibt, sodass

1. a^n-1 % n = 1

und


2. a^m % n ungleich 1


für 1 < m < n-1


ich versuche mit meinem Programm bisher nur die 2.te Bedingung zu prüfen. Allerdings bin ich mir unsicher was er momentan macht da ich Anfänger bin und ehrlich gesagt bei den ganzen variablen und schleifen den überblick verloren habe was überhaupt passiert. ja ich wäre dankbar für konkrete hilfe bei dem programm aber auch allgemeinen tipps wie man solche programmieraufgaben bewältigt / angeht.
 
Zuletzt bearbeitet:
S

SlaterB

Gast
schaue dir Zeile 10 an, siehst du dort den Code beginnend mit dem Buchstaben z?
vor dem z sind ein Haufen Leerzeichen oder Tabs, warum sind die da?
hast du schon von Formatierung von Code gehört, Einrückung?
dann mache das besser strukturiert, das hilft nämlich beim Codeverständnis, welches ja offensichtlich aktuell dein Problem dein Problem ist

richtig formatiert sieht dein Code so aus:
Java:
public class aufgabe1 {
    public static void main(String[] argv){
        int a = 2, n, ergebnis2 = 1, ergebnis = 2, m = 0, zwischenergebnis = 2;

        n = IO.readInt();
        while (a < n && ergebnis2 != 2) {

            while (m < n - 1) {
                zwischenergebnis = zwischenergebnis * a;
                ergebnis = zwischenergebnis % n;
                m++;
            }
            a++;
            zwischenergebnis = a;
            if (ergebnis != 1) ergebnis2 = 2;
        }
    }
}
vorher hätte ihn auch niemand anders lesen können..,


so, jetzt ist vorerst zu sagen dass der Code eigentlich noch relativ übersichtlich ist, wenig Schleifen, wenig Variablen,
ich wüßte zwar direkt nicht, was passiert, aber man kann zumindest den Weg aller Variablen nachvollziehen,

wenn dir der Code nicht klar ist, zu viele Schleifen usw., dann fange besser nochmal von vorne an, baue eine Variable nach der anderen rein,
jede mit einem gewissen Zweck, ansonste verzichte auf sie..

bessere Namen als ergebnis + ergebnis2 helfen vielleicht oder Kommentare dazu, aber in so kleinem Programm mit wohl vorgegebenen a + n und dann noch zwischenergebnis bist du eigentlich auch gut unterwegs..
 

hamster1989

Mitglied
danke das mit dem einrücken vergess ich schonmal. Neu schreiben hab ich auch schon zu oft gemacht glaube ich da komm ich jedes mal irgentwie auf die gleiche idee. Ich wollte eher wissen ob das Programm das macht was es soll also die 2.te Bedingung überprüfen. Ich weiss nicht wie ich das genau überprüfen soll ob das jetzt passt oder nicht.
 
Zuletzt bearbeitet:
S

SlaterB

Gast
suche dir doch ein paar Beispiele mit insgesamt positiven und negativen Ausgang,
rechne auf den Papier alle benötigten a und alle Zwischenergebnisse durch und schaue dir an ob das Programm das auch so macht,

ist ergebnis2 = 1 oder 2 dein Endergebnis ok oder nicht ok?
dann baue lieber eine Untermethode die jederzeit mit return true oder false abbrechen kann -> ergebnis2 eingespart
 

Andi_CH

Top Contributor
true oder false hatten wir noch nicht ...

Sorry, aber das kann unmöglich sein. Wenn du while, if und ähnliche Konstrukte verwenden sollst müsste dir auch boolean erkärt worden sein. Also entweder du hast gepennt oder du solltest dem Prof ein :autsch: verpassen, aber aus ureigenster Erfahrung denke ich mal, dass eher das Erstere der Fall ist. Also Nachhilfe.

Java:
int i = 1;
boolean res = (i==1);
System.out.println("Das Ergebnis ist " + res);
// hier wird "Das Ergebnis ist true" ausgegeben
res = (i==2);
System.out.println("Das Ergebnis ist " + res);
// hier wird "Das Ergebnis ist false" ausgegeben
res = (i<2);
System.out.println("Das Ergebnis ist " + res);
// hier wird "Das Ergebnis ist true" ausgegeben

Immer wenn ein Ausdruck wahr ist ist das Resultat true (Grins - ist banal - true heisst "wahr")
und wenn nicht, ist es halt false.
 

hamster1989

Mitglied
Java:
public class aufgabe1 {
  public static void main(String[] argv) {
    int n, a=2, ergebnis=2, ergebnis2=2, zwischenergebnis=2, m=2, i=2,
    zwischenergebnis2=1;

    do
    n = IO.readInt("Bitte eine Zahl groesser als 2");
    while(n <=2);

    while(a < n && ergebnis == 2){

      while (m < n-1 && ergebnis2 != 1){ 
        zwischenergebnis = zwischenergebnis * a;
        ergebnis2 = zwischenergebnis % n;
        m++;
      }

      if (ergebnis2 != 1) ergebnis = 3;
      else{
        ergebnis = 2;
        a++;
        m = 2;
        zwischenergebnis = a;
      }
      ergebnis2 = 2;
    }         
    if(ergebnis ==3){
      zwischenergebnis2 = a;
      while (i <= n-1){
        zwischenergebnis2 = zwischenergebnis2 * a;
        i++;
      }
      zwischenergebnis2 = zwischenergebnis2 % n;
      if (zwischenergebnis2 == 1)
      IO.println("Zahl ist eine Primzahl");
      else IO.println("Zahl ist keine Primzahl");
    }
    else IO.println("Zahl ist keine Primzahl");


für n < 20 passt das aber darüber laufen jetzt die int variablen über was kann ich da machen?
 
S

SlaterB

Gast
7*7*7*7 =2401 % 5 = 1

7*7 = 49 % 5 = 4
4*7 = 28 % 5 = 3
3*7 = 21 % 5 = 1

edit: wobei du das vielleicht schon hast? ich werde noch genauer schauen
edit: doch richtig von mir, zumindest ein entsprechender Punkt
 
Zuletzt bearbeitet von einem Moderator:

Landei

Top Contributor
BigInteger-Variante:

Java:
    //en.literateprograms.org/Lucas-Lehmer_test_for_Mersenne_numbers_%28Java%29
    public static boolean lucasLehmer(int p) {
        BigInteger s = BigInteger.valueOf(4);
        BigInteger m = BigInteger.valueOf(2).pow(p).subtract(BigInteger.ONE);
        for (int i = 0; i < p - 2; i++) {
            s = s.multiply(s).subtract(BigInteger.valueOf(2)).mod(m);
        }
        return s.equals(BigInteger.ZERO);
    }
 
S

SlaterB

Gast
falls auf mich bezogen:
die zweite Variante rechnet wie die erste 7^4 % 5 aus, nur dass die zweite Variante nicht über 49 hinausgeht, während die erste bis zu 2401 benötigt,
klingt genau nach einer Lösung für Zahlenüberlauf ;)
 

Landei

Top Contributor
ich verstehe deine antwort nicht

The student Doko came to a Zen master, and said, "I am seeking the truth. In what state of mind should I train myself, so as to find it?"

Said the master, "There is no mind, so you cannot put it in any state. There is no truth, so you cannot train yourself for it."

"If there is no mind to train, and no truth to find, why do you have these monks gather before you every day to study Zen and train themselves for this study?"

"But I haven't an inch of room here," said the master, "so how could the monks gather? I have no tongue, so how could I call them together or teach them?"

"Oh, how can you talk like this?" said Doko.

"But if I have no tongue to talk to others, how can I lie to you?"

Then Doko said sadly, "I cannot follow you. I cannot understand you."

"I cannot understand myself," said the master.
Zen Koan
 
S

SlaterB

Gast
muss ich alles was ich meine immer erklären? so macht das ja auch keinen Spass

ich wollte damit ausdrücken dass ich weiterhin deinen Code nicht komplett analysiert habe und du eine Code-Zeile einfügen musst so dass mit Brief und Siegel alles funktioniert,
sondern dass das eine von möglicherweise mehreren Problemstellen ist die du nun bearbeiten kannst
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Primitiver Lucas-Lehmer-Test hängt sich auf Java Basics - Anfänger-Themen 7
Zrebna Frage zu Test-Driven Development (TDD) Java Basics - Anfänger-Themen 3
W junit.Test not accessible? Java Basics - Anfänger-Themen 4
W Junit-Test (Java) Java Basics - Anfänger-Themen 4
W Testfälle bei Java ( Junit-Test) Java Basics - Anfänger-Themen 3
D Hilfe bei Calculator Test Java Basics - Anfänger-Themen 15
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
M Test auf Exceptions schreiben Java Basics - Anfänger-Themen 11
P Eclipse Karate Framework API Test . Unexpected Error: the trustAnchors parameter must be non-empty Java Basics - Anfänger-Themen 1
I Variable innerhalb Methode: Local variable test defined in an enclosing scope must be final or effectively final Java Basics - Anfänger-Themen 3
A Junit Test für MysqlDataSource JDBC Java Basics - Anfänger-Themen 3
A Test Junit Java Basics - Anfänger-Themen 1
H Junit test Java Basics - Anfänger-Themen 12
P JUnitTest Best Practise (Ein Assert pro Test?) Java Basics - Anfänger-Themen 10
P Methoden JUnit 4 - Test Java Basics - Anfänger-Themen 6
Mr_Kleeblatt Operatoren if (arri[i] != "test.java"&& arri[i] != "test.class") Java Basics - Anfänger-Themen 3
N Fehler bei JUnit Test Java Basics - Anfänger-Themen 5
L Test-Methoden schreiben Java Basics - Anfänger-Themen 13
D Test auf Dopplungen Java Basics - Anfänger-Themen 32
neerual Klassen Wie rufe ich Klassen, die andere Klassen extenden in einer Test Unit auf? Java Basics - Anfänger-Themen 10
B JUnit Test erstellen Java Basics - Anfänger-Themen 6
B zzz.test Java Basics - Anfänger-Themen 13
W Problem bei JUnit Test Aufgabe Java Basics - Anfänger-Themen 15
W JUnit Test und HashCode Java Basics - Anfänger-Themen 14
C Erste Schritte Hexidezimal-Test Java Basics - Anfänger-Themen 2
A Kfz - Händler Klasse. JUnit-Test gibt noch Fehler an, aber finde Ursache nicht Java Basics - Anfänger-Themen 7
B Palindrom Test mit Junit Java Basics - Anfänger-Themen 23
T Minesweeper Test Java Basics - Anfänger-Themen 2
S Junit Test Java Basics - Anfänger-Themen 2
F Test Java Basics - Anfänger-Themen 12
W Ist das ein legitimer Test? Java Basics - Anfänger-Themen 5
shiroX Methoden JUnit-Test einer void-Methode Java Basics - Anfänger-Themen 4
U Best Practice Datenbereitstellung Unit Test Java Basics - Anfänger-Themen 6
B Binäre Suche - Junit Test Java Basics - Anfänger-Themen 6
B Datentypen Test float und double speichern Zahlen nur ungefähr Java Basics - Anfänger-Themen 4
Z Vererbung Test auf Normalverteilung, Wilcoxon Java Basics - Anfänger-Themen 3
M Assertion NotNull Test Java Basics - Anfänger-Themen 3
S Separate Funktion für JUnit-Test Java Basics - Anfänger-Themen 3
W Test, ob Datei existiert, schlägt fehl Java Basics - Anfänger-Themen 4
T JUnit test failed Java Basics - Anfänger-Themen 3
H Array Test Methode schreiben Java Basics - Anfänger-Themen 3
R JUnit Test mit einer Dateistruktur als Testparameter Java Basics - Anfänger-Themen 3
V Bruchrechner Test Java Basics - Anfänger-Themen 7
T Test läuft schief Java Basics - Anfänger-Themen 3
shiroX OOP Array kleinste Zahl mit jUnit test Java Basics - Anfänger-Themen 3
G mache aus Test nach sortieren estt oder java aajv Java Basics - Anfänger-Themen 5
S Code stimmt nicht für vorgegebenen JUnit-Test Java Basics - Anfänger-Themen 2
x22 Java Multiple Choice Test Java Basics - Anfänger-Themen 8
R JUnit Test mit mehrfach ausgeführt Java Basics - Anfänger-Themen 6
B JUnit - Mini-Test Java Basics - Anfänger-Themen 9
T Unterschied zwischen Integrationstest und JUnit test? Java Basics - Anfänger-Themen 12
N Test mit assert Java Basics - Anfänger-Themen 9
Y Junit Test - Testwert ändert sich Java Basics - Anfänger-Themen 12
K Palindrom Test Java Basics - Anfänger-Themen 9
S Performance-/Stress Test für Webanwendung Java Basics - Anfänger-Themen 2
V Mediaplayer - NullPointerException bei Unit-Test Java Basics - Anfänger-Themen 4
H Ich kann mein Java Programm Test.class nicht ausführen Java Basics - Anfänger-Themen 6
H Javabefehl Test Java Basics - Anfänger-Themen 3
S Hilfe zu Java-Programm und JUnit Test!! Java Basics - Anfänger-Themen 5
T JUNit Test IOException Java Basics - Anfänger-Themen 5
P White-Box-Test Verständnisproblem Java Basics - Anfänger-Themen 11
N Methoden Test ob Server vorhanden ist Java Basics - Anfänger-Themen 4
N Test Datei = Bild Java Basics - Anfänger-Themen 5
S Erste Schritte 1. Test Programm Java Basics - Anfänger-Themen 21
Spin JUNIT Test Case - Problem bei testen Java Basics - Anfänger-Themen 2
T brauche HILFE beim Junit test:eek: Java Basics - Anfänger-Themen 11
timbeau JUnit Test Dauer speichern/loggen Java Basics - Anfänger-Themen 16
E Am Mittwoch Test und ich checks überhaupt nich Java Basics - Anfänger-Themen 27
A junit test wann verwendet man "was"? Java Basics - Anfänger-Themen 4
J JUnit Test Java Basics - Anfänger-Themen 2
D Test einer Chipkarte Java Basics - Anfänger-Themen 2
J Problem mit Test-Klasse Java Basics - Anfänger-Themen 4
E Test, ob String in Double umwandelbar ist Java Basics - Anfänger-Themen 3
J Test steht vor der Tür !! Java Basics - Anfänger-Themen 2
X Array nur mit Zahlen (test) Java Basics - Anfänger-Themen 11
Houly JUnit Test Suite anlegen Java Basics - Anfänger-Themen 6
M Erster HashMap-test Java Basics - Anfänger-Themen 5
O Test auf JComponent Java Basics - Anfänger-Themen 7
pun Junit Test erkennt Exception nicht.. Java Basics - Anfänger-Themen 14
D C0 und C1 Test nochmal Java Basics - Anfänger-Themen 9
D C0 und C1 Test Java Basics - Anfänger-Themen 3
G BlueJ jUnit Test Java Basics - Anfänger-Themen 6
J Test auf UTF-8 Java Basics - Anfänger-Themen 2
M Wo und wie speich. ich .java und wo den zugehörigen test? Java Basics - Anfänger-Themen 2
Shalimar Test, ob mehr pos. oder neg. Zahlen Java Basics - Anfänger-Themen 3
M test Java Basics - Anfänger-Themen 5
M test Java Basics - Anfänger-Themen 2
M test Java Basics - Anfänger-Themen 10
V Test mit JUnit verbinden Java Basics - Anfänger-Themen 3
M test Java Basics - Anfänger-Themen 4
H Miller Rabin Test Primzahlen werden teilweise nicht gefunden Java Basics - Anfänger-Themen 5
C Multiple Choice Test Java Java Basics - Anfänger-Themen 5
G Grundfläche färben, ein Bild (NORTH) ind Test darunter? Java Basics - Anfänger-Themen 6
M Palindrom Test mit Char-arrays! Java Basics - Anfänger-Themen 3
M Java Test Übungsfragen Hilfe! Java Basics - Anfänger-Themen 5
B JUnit Test Klasse Rational Java Basics - Anfänger-Themen 12
N class Test<E extends MyAbstractClass> => typ von E? Java Basics - Anfänger-Themen 5
G jar cvf test.war -C src/ WEB-INF -C src/ ALLE JSP Wildcard? Java Basics - Anfänger-Themen 2
0 Quadratzahl-Test Java Basics - Anfänger-Themen 4
C Unsupported major.minor bei jUnit Test Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben