Hilfe zu einem primzahlensuch-programm
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anfnger
beitrag
belastung
berechnung
bessere verfahren
definiert abhilfe
eingabefeld
endzahl
fehlenden formular
maschinenraum
mathematik
nachteil
paar extra
primzahl
schlu
sekunde
teiler
test
variable
zeile
-
Ich bin noch ein rechter php-anfänger, und wollte ein programm schreiben zum ausrechnen von primzahlen zwischen zwei eingabewerten. Die eingabefelder werden korrekt geladen, jedoch bricht die berechnung der primzahlen immer ab nach 30 sekunden, obwohl ich nur 1 und 100 eingegeben habe :(
Ich wäre euch dankbar für eine schnelle hilfe
<head>
</head>
<body>
<!-- Forumlar, sendet Start- und Endzahl. //-->
<div class="eingabe"><p></p>Welche Zahlen sollen geprueft werden?</p>
<form action="mathe_robin.php">
<input type="hidden" name="z" value="2">
<p>Von:<br><input name="von" style="width:15em" type="text" size="30" maxlength="10" value="1"></p>
<p>Bis:<br><input name="bis" style="width:15em" type="text" size="30" maxlength="10" value="100"></p>
<input type="submit" value="Berechnen">
</form>
</div>
<?php
/* Jede Zahl wird auf Primzahl getestet. */
$primzahlen = array();
//eingabestart ungerade machen//
$test = $von;
$test = $test%2;
if ($test == 0) {
$von++;
}
//rechnen...//
for ($i=$von; $i<=$bis; $i+2) {
$j = $i;
for ($lauf = $von; $lauf<$i; $lauf + 2) {
$rest= $j % $lauf;
if ($rest == 0) {
break2;
} else {
$primzahlen[] = $i;
break2;
}
}
}
/* Primzahlen wirden aufgeschrieben */
echo "Primzahlen <br />\n";
foreach ($primzahlen as $zahl)
echo " ; " . $zahl;
?>
</body>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo infanteria,
wenn ich das recht sehe, hast du vergessen, die Formulareingaben per $_POST-Variable zu übernehmen.
Deine Variablen $von und $bis sind also nie definiert.
Abhilfe schafft:
$von = $_POST['von'];
$bis = $_POST['bis'];
Die Zeile <input type='hidden' name='z' value='2'> scheint in deinem Formular überflüssig zu sein, da die Variable $z im Folgenden nie gebraucht wird (desweiteren könntest du eine 2 auch einfach als Variable definieren, also $z = 2; ).
Ich verstehe außerdem deinen Kommentar über der ersten PHP-Code-Zeile nicht ganz:
/* Jede Zahl wird auf Primzahl getestet. */
Ist das auf die erste Zeile bezogen??? Dann kann das nmlich nicht stimmen, da die erste Zeile nur die Variable $primzahlen als Array definiert...aber das nur nebenbei...
In deinem Formuklar solltest du noch method="POST" ergänzen, das action-Attribut kannst du, weil alles in einer Datei steht auch getrost weglassen...
<form method="POST">
Ganz durchschaut habe ich deinen "Maschinenraum", also den Rechner-Teil noch nicht, liegt aber wohl daran, dass ich solche Mathematik-Anwendungen über alles hasse.
Ich denke der Fehler liegt in der fehlenden Formular-Übernahme. Wenn beide Variablen ($von und $bis) gleich null sind, hat das SCript natürlich nichts, womitb es arbeiten kann und bleibt stehen...
Ich hoffe, das hilft dir fürs Erste!
Gruß
ferdinand24
Beitrag geändert: 1.11.2006 21:47:28 von ferdinand24 -
<?php
Ich habe auch mal ein bisschen damit gespielt. Mit diesem Script schaffe ich etwa 40000 Zahlen zu prüfen (Sry für Server-belastung)
Es gibt sicher bessere Verfahren um Primzahlen zu suchen, aber um PHP zu lernen ist das hier sicher nicht schlecht...
//$von und $bis aus $_GET oder $_POST
$primzahlen = array();
for ($i=$von; $i<=$bis; $i++) { //Niedrigste Zahl nehmen...
$teiler = 0 ;
for ($j=2; $j<$i; $j++) { //und von 2 mit jeder Zahl auf
$rest = $i%$j ; //Rest prüfen...
if ($rest == 0) { //Wenn es keinen Rest gibt...
$teiler ++;
break 1; //Nächste Zahl prüfen..
}
}
if ($teiler == 0) {
$primzahlen[] = $i ; //Primzahl speichern
}
}
http://nigolaz.milten.lima-city.de/
Im Menü unter Mathe habe ich das Scrip noch einmal zum teste. Zudem macht es noch ein paar extra Aufgaben und speichert das ganze unter "txt.txt" und kann es auch wieder auslesen...
mfg niGOlaz
Edit:Wie schaffen es manche Leute den Code sauber und Farbig zu posten?
Beitrag geändert: 1.11.2006 22:45:20 von nigolaz -
schreib einfach
(ohne die eckigen Klammern) an den Anfang und [/code] an den Schluss des Codes.[code]
Nachteil: es wird automatisch ein <? an den Anfang und ein ?> an das Ende gemacht, was bei HTML Code stört.
Beitrag geändert: 2.11.2006 16:11:40 von laberlu -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage