Bug in NextPrimeNumber in Übung11

Benutzeravatar
HerrDerFlammen
Mausschubser
Mausschubser
Beiträge: 79
Registriert: 16. Okt 2006 17:30
Wohnort: Dreieich
Kontaktdaten:

Bug in NextPrimeNumber in Übung11

Beitrag von HerrDerFlammen »

Dem erstellenden Autor ist wohl leider ein kleiner Fehler passiert. Für Eingaben <3 gibt diese Methode als nächste Primzahl 2 zurück, was bekanntlicherweise Unsinn ist ;-)
Das Lehren soll so sein, dass das Dargebotene als wertvolles Geschenk und nicht als saure Pflicht empfunden wird.
(Albert Einstein)

Benutzeravatar
Wang Tang
Mausschubser
Mausschubser
Beiträge: 92
Registriert: 5. Dez 2006 17:57

Beitrag von Wang Tang »

hab die übung grad nicht vor mir, aber das scheint doch zu stimmen?

banshee
Nerd
Nerd
Beiträge: 684
Registriert: 22. Okt 2006 18:46

Beitrag von banshee »

Für die Eingabe 2 jedenfalls nicht :>

HolgerF
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 263
Registriert: 16. Jan 2007 14:20
Kontaktdaten:

Beitrag von HolgerF »

? Stimmt doch. 2 ist die erste Primzahl. Der Algorithmus soll ab einer gegebenen Unterschranke s die nächste Primzahl berechnen. Für s=2 ist die nächste Primzahl eben s selbst.

banshee
Nerd
Nerd
Beiträge: 684
Registriert: 22. Okt 2006 18:46

Beitrag von banshee »

aso, ich hab gedacht s is dabei dann ausgeschlossen.

HolgerF
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 263
Registriert: 16. Jan 2007 14:20
Kontaktdaten:

Beitrag von HolgerF »

Naja, es ist zugegeben ein bisschen missverständlich. Aber ich geh da immer von der mathematischen Sichtweise aus, und da würde im anderen Fall explizit stehen "die nächste Primzahl, die größer als s ist".

Zweiter Hinweis: Man braucht das im Praktikum 9, und da explizit in der Funktion, dass die Primzahl gleich s sein kann.

Benutzeravatar
HerrDerFlammen
Mausschubser
Mausschubser
Beiträge: 79
Registriert: 16. Okt 2006 17:30
Wohnort: Dreieich
Kontaktdaten:

Beitrag von HerrDerFlammen »

HolgerF hat geschrieben: Zweiter Hinweis: Man braucht das im Praktikum 9, und da explizit in der Funktion, dass die Primzahl gleich s sein kann.
Würde ich so nicht sagen. Besipielsweise ist
deine Tabellengroesse zu beginn 2 und dein extensionfaktor zu beginn 1.
Du fügst das erste element ein und es ändert sich nix. Du fügst nun das zweite ein und musst deine tabelle vergrößern. Also aktuelle Größe mal extensionfaktor ist wieder 2. Jetzt berechnest du die nächste Primzahl, und wenn du die Schranke s mit reinnimmst kommt dann also für 2 wieder 2 raus, bedeutet die Tabelle vergrößert sich garnicht. Ist doch nicht besonders gut oder?
Ab einer unteren Schranke heißt für mich jedenfalls, dass die Schranke nicht dazu gehört.
Das Lehren soll so sein, dass das Dargebotene als wertvolles Geschenk und nicht als saure Pflicht empfunden wird.
(Albert Einstein)

Christoph B
Computerversteher
Computerversteher
Beiträge: 370
Registriert: 15. Okt 2006 18:28
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Christoph B »

if(extensionfaktor <= 1) throw new IllegalArgumentException("sag mal, willst du mich verarschen?");

HolgerF
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 263
Registriert: 16. Jan 2007 14:20
Kontaktdaten:

Beitrag von HolgerF »

@HerrDerFlammen: Da hat Christoph recht, ein Expansionsfaktor von 1 ist einfach schlicht... dämlich? Du kannst aber im Prinzip auch einfach das Produkt + 1 deinem Primzahlfinder übergeben. Da das Produkt logischerweise selbst keine Primzahl sein kann AUSSER in diesem Spezialfall, schadet das nicht.

Benutzeravatar
HerrDerFlammen
Mausschubser
Mausschubser
Beiträge: 79
Registriert: 16. Okt 2006 17:30
Wohnort: Dreieich
Kontaktdaten:

Beitrag von HerrDerFlammen »

Ich finds sehr interessant, auf was für nem vulgärniveau die diskussion angekommen ist.
Ob ein extensionFactor von 1 nun sinnig oder nicht ist, er ist jedenfalls laut aufgabenstellung nicht verboten.

Kleiner Auszug:

* If your hashtable has to grow, multiply the size of your hashtable
* with extensionFactor. Then use the next prime greater than that product.

Das klappt doch wie schon gesagt auch mit einem extensionFactor von 1.
Vielleicht sollte sich mal jemand offizielles dazu äußern, bevor es jetzt gleich Beschimpfungen regnet.
Das Lehren soll so sein, dass das Dargebotene als wertvolles Geschenk und nicht als saure Pflicht empfunden wird.
(Albert Einstein)

HolgerF
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 263
Registriert: 16. Jan 2007 14:20
Kontaktdaten:

Beitrag von HolgerF »

Dann gib doch, wie gesagt, einfach das Produkt + 1 an deine Suchfunktion (Produkte selbst sind ja ohnehin nie prim, es sei denn halt, der eine Multiplikand ist 1).
Bei der Initialgröße sollst du z. B. hingegen wieder von der Initialgröße selbst ausgehen, eine Initialgröße von 2 ist ausdrücklich zulässig.

Du kannst also natürlich auch gerne eine Funktion schreiben, die die nächste GRÖSSERE Primzahl sucht. Dann musst du halt initial-1 übergeben, läuft aufs selbe hinaus. Fürs Praktikum ist das einerlei.

Hyst
Mausschubser
Mausschubser
Beiträge: 70
Registriert: 5. Mai 2007 22:20

Beitrag von Hyst »

seh ich ähnlich...

tja solche missverständnisse treten eben auf wenn (mal wieder) die aufgabenstellung schlecht formuliert wurde.

ich hab es auch so interpretiert, dass extentionfaktor <= 1 keinen sinn macht... in der aufgabenstellung steht:
..., soll sich Ihre Hashtabelle um einen (im Konstruktor) gegebenen Faktor X dynamisch vergößern. Da nur Primzahlenzahlen als Tabellengröße erlaubt sind, mussen Sie
die nächst höhere Primzahl finden.
mir sagt das, dass mein faktor > 1 sein muss, da sonst meine berechnung zur nächsten unteren schranke wieder eine primzahl liefert. und das wäre ja dann ein erlaubter wert. Außerdem soll sich die Hashtabelle um einen faktor VERGRÖßERN.. das tut sie mit 1 nicht.

(kann es sein, dass herr wach keine lust mehr hat irgendwelche fragen zu praktika oder übungen zu beantworten???... hab irgendwie lange nichts mehr von ihm gelesen)

qveXx
Mausschubser
Mausschubser
Beiträge: 64
Registriert: 2. Dez 2005 19:02

Beitrag von qveXx »

Hyst hat geschrieben:seh ich ähnlich...

tja solche missverständnisse treten eben auf wenn (mal wieder) die aufgabenstellung schlecht formuliert wurde.
Aufgabenstellung hat geschrieben: Da nur Primzahlen als Tabellengröße erlaubt sind, müssen Sie die nächst höhere Primzahl finden
Eingabe 7, Extensionfaktor 1 -> nächst höhere Primzahl = 11

wobei man schon diskutieren kann ob 1 dazu gehöhrt oder nicht, aber zumindestens dass mit der nächsten Primzahl sollte klar sein, dass wenn man eine Primzahl als Eingabe hat, nicht die gleiche Primzahl zurückgegeben wird sonder halt die nächst größere

Sollte es anders sein, dann müsst ich noch nen Patch in mein Prak einspielen ;>

Edit:
Habe grad im Quellcode Kommentar gesehen: "* If initialSize is not prime, use the next prime greater than initialSize to
* initialize your hash table." was wiederrum heißen würde nicht nach der nächsten zu suchen. Ich würde sagen
(aufgabenstellung.pdf).compareTo(aufgabenstellungQuellcode)!=0 ^^
Zuletzt geändert von qveXx am 5. Jul 2007 17:29, insgesamt 1-mal geändert.

Hyst
Mausschubser
Mausschubser
Beiträge: 70
Registriert: 5. Mai 2007 22:20

Beitrag von Hyst »

soll sich Ihre Hashtabelle um einen (im Konstruktor) gegebenen Faktor X dynamisch vergößern
X=1 vergrößert die liste nicht...
der zusatz: Es sind nur primzahlen erlaubt tritt ja erst als kriterium NACH der vergrößerung in kraft.

wie gesagt: nicht unmissverständlich formuliert.

Christoph B
Computerversteher
Computerversteher
Beiträge: 370
Registriert: 15. Okt 2006 18:28
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Christoph B »

joa, aber auch nur für Zahlen die nich schon prim sind würd ich sagen ;)
und 7 * 1 = prim, wieso dann weiter prim suchen?
edit da war jemand schneller

falls sich das vulgäre auf meinen post bezogen hat sorry ^^
hatte einfach per copy & paste meine abfrage aus dem prak gepostet

Antworten

Zurück zu „Archiv“