Ich lerne PHP und habe mir jetzt (leider) mehr oder weniger in den Kopf gesetzt, ein Script zu schreiben, welches Zahlen zwischen einem Bereich x bis y prüft, ob sie Primzahlen sind.
Ich bin daher erst mal mit der Hauptprozedur angefangen (ist eine feste Zahl x eine Primzahl).
Hier mein Ergebnis:
Leider ist alles ein wenig verrutscht, aber ich möchte noch eben ein paar Worte sagen.
Zu Anfang wird erstmal eine Zahl festgelegt, die geprüft werden soll (bei mir 79 - ist eine Primzahl).
Nun geht die Do-Schleife los: es soll nur weitergehen, wenn die Hälfte der $testzahl grösser als der $teiler ist (weil: Wenn Testzahl=79 wäre, und der $teiler 40 ist, kann es keinen Wert (von 1 verschieden) mehr geben, der "ganz" ist.
So, das ist in diesem Fall gegeben, da 79/2=39,5 Grösser als 2 (=$teiler) ist.
Wenn nun die $testzahl ohne Rest durch den $teiler teilbar ist, dann ist die Zahl keine Primzahl.
Die bool-Variable wird auf true gesetzt (somit ist unten die while-Bedingung ungültig) und es sollte echo "Die Zahl ist keine Primzahl" ausgegben werden.
Falls die Zahl nur MIT Rest teilber ist, wird der $teiler um 1 erhöht und die Schleife beginnt nachher wieder mit der Prüfung ob die Hälfte des $testzahl usw...
Falls nun der $teiler grösser als die Hälfte des $testzahl ist, wird der Else-Teil ausgeführt, und die Zahl ist eine Primzahl!
Aber das Script läuft bei mir nicht. Es zeigt KEINES der beiden Echos an - und ich weiss nicht, wo der Fehler liegt.
Hab error_reporting(E_ALL) stehen und der meckert aber auch nicht rum!
Irgendwo ist ein Logikfehler, doch leider find ich ihn nicht! Wäre nett, wenn ihr mir helfen könntet!
Meines Wissens nach, GIBT es eine Funktion isPrime(); aber die möchte ich eigentlich nicht nutzen, da es ja auch anders gehen MUSS!
Danke schon mal für die Hilfe!
Ich bin daher erst mal mit der Hauptprozedur angefangen (ist eine feste Zahl x eine Primzahl).
Hier mein Ergebnis:
PHP:
//Variblen festlegen
$testzahl = 79; //Zahl, die getestet werden soll, ob sie ein Primzahl ist
$teiler = 2; //Durch diese Zahl wird geteilt
$primzahl = false;
do
{
if ($testzahl/2 >= $teiler)
{
if ($testzahl%$teiler = 0)
{
$primzahl = true;
echo "Die Zahl ".$testzahl." ist keine Primzahl";
}
else
{
$teiler++;
};
}
else
{
echo "Die Zahl ist ".$testzahl." eine Primzahl!<br>";
};
}
while ($primzahl=false);
Leider ist alles ein wenig verrutscht, aber ich möchte noch eben ein paar Worte sagen.
Zu Anfang wird erstmal eine Zahl festgelegt, die geprüft werden soll (bei mir 79 - ist eine Primzahl).
Nun geht die Do-Schleife los: es soll nur weitergehen, wenn die Hälfte der $testzahl grösser als der $teiler ist (weil: Wenn Testzahl=79 wäre, und der $teiler 40 ist, kann es keinen Wert (von 1 verschieden) mehr geben, der "ganz" ist.
So, das ist in diesem Fall gegeben, da 79/2=39,5 Grösser als 2 (=$teiler) ist.
Wenn nun die $testzahl ohne Rest durch den $teiler teilbar ist, dann ist die Zahl keine Primzahl.
Die bool-Variable wird auf true gesetzt (somit ist unten die while-Bedingung ungültig) und es sollte echo "Die Zahl ist keine Primzahl" ausgegben werden.
Falls die Zahl nur MIT Rest teilber ist, wird der $teiler um 1 erhöht und die Schleife beginnt nachher wieder mit der Prüfung ob die Hälfte des $testzahl usw...
Falls nun der $teiler grösser als die Hälfte des $testzahl ist, wird der Else-Teil ausgeführt, und die Zahl ist eine Primzahl!
Aber das Script läuft bei mir nicht. Es zeigt KEINES der beiden Echos an - und ich weiss nicht, wo der Fehler liegt.
Hab error_reporting(E_ALL) stehen und der meckert aber auch nicht rum!
Irgendwo ist ein Logikfehler, doch leider find ich ihn nicht! Wäre nett, wenn ihr mir helfen könntet!
Meines Wissens nach, GIBT es eine Funktion isPrime(); aber die möchte ich eigentlich nicht nutzen, da es ja auch anders gehen MUSS!
Danke schon mal für die Hilfe!