Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Musterlösung vs meine lösung » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Zum Ende der Seite springen Musterlösung vs meine lösung
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Tim0
unregistriert
Musterlösung vs meine lösung Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo,
Das ist die Musterlösung:
public static boolean istPrim
(int n) {
// moegliche
Teiler liegen im Bereich 2 bis n/2 (abgerundet)
for (int zaehler = 2; zaehler <= n / 2; zaehler++) {
if (n % zaehler == 0) {
return false;
}
}
return true;
}
an der stört mich das return false in der for schleife

Meine Lösung sieht so aus

public static boolean istPrim(int n) {
boolean a= true;
for (int zaehler = 2; zaehler <= n / 2; zaehler++) {
if (n % zaehler == 0) {
a= false;
break;
}
}
return a;
}
02.01.2015 04:18
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Beide Lösungen haben Vor- und Nachteile. Bei der Musterlösung kann einfach nichts mehr mit dem Ergebnis passieren. Wäre die Funktion komplexer, dann könnte bei einer zukünftigen Wartung ein Programmierer das Ergebnis bei deiner Version nach der Schleife noch verfälschen, obwohl es eigentlich schon fest steht.
Deine Version hat den Vorteil, dass sie einen zentralen Punkt hat, an dem das ergebnis fest steht und ausgegeben wird. Ich persönlich bevorzuge auch meist diese Variante. Eine genaue Begründung dafür kann ich leider nicht liefern. Das ist eher eine intuitive Entscheidung. Muss man die zweite Variante jedoch debuggen, so muss man immer den gesamten Kontrollfluss nachvollziehen...

Gruß,

Karlito
02.01.2015 07:10 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Mich stört etwas ganz anderes:
Zitat:
Teiler liegen im Bereich 2 bis n/2 (abgerundet)

Das ist zwar richtig, interessiert aber nicht. Wichtig ist nur der kleinste Primfaktor. Hat man den gefunden, kann man bereits abbrechen. Sei [latex]n = p \cdot q, &p \leq q[/latex]. Es reicht aus, die Existenz dieses p zu beweisen (oder zu widerlegen), um zu sagen, ob die Zahl prim ist.

Folglich: for (int zaehler = 2; zaehler * zaehler <= n; zaehler++). Das reduziert die Rechenzeit deutlich.

__________________
Syntax Highlighting fürs Board (Link)
02.01.2015 07:15 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Informatiker Board » Themengebiete » Praktische Informatik » Musterlösung vs meine lösung