Hola Felix!
var Grenzzahl = Zahl / 2;
for (var i = 2; i <= Grenzzahl; i++)
var mymod = Zahl % i;
if (mymod == 0) {
alert(Zahl + " ist keine Primzahl, weil teilbar durch " + i);
}
if (mymod != 0)mir scheint von der Programmlogik, dass Du keine letztendliche Aussage über "Zahl" treffen kannst, sodass Deine Funktion kein sinnvolles true oder false zurückgeben kann. Immerhin wird "mymod" bei jedem möglichen Teiler wieder überschrieben, sodass von der Funktion letztendlich nur "Grenzzahl" als Teiler geprüft wird.
Hm... Ich bin eh nicht gut drauf heute (rotze rum, hab halsschmerzen und bin angefressen) und das war irgendwie die zweite oder dritte Variante die ich posten wollte. Ich glaub da hab ich Code verwurschtelt. Du hast natuerlich recht. Das Prog merkt sich gar nicht ob die Zahl nun geteilt werden konnte oder nicht und sowieso is das ungetesteter Muell.
Das Beispiel in SELFHTML benutzt "Check" als sogenanntes Flag, um in den verschiedenen Testläufen dieses Flag bei Bedarf wieder zu löschen. Dein Beispiel bräuchte das auch!
Das schon. Das hier nicht:
function PrimzahlCheck (Zahl)
{
if (Zahl >= 2) {
var Grenzzahl = Zahl / 2;
var i = 2;
for (i = 2; i <= Grenzzahl; i++)
if (Zahl % i == 0)
{
alert(Zahl + " ist keine Primzahl, weil teilbar durch " + i);
break;
}
if (Zahl % i != 0)
alert(Zahl + " ist eine Primzahl!");
}
else
{
alert("Bitte geben Sie eine natürliche Zahl größer als 1 ein!");
}
}
Is halt so nah wie moeglich am Original ohne check. Dafuer halt mit extra Rechenschritt, der sich aber auch wegmachen lassen tut.
"Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
- T. Pratchett