![]() |
PHP-Neuling
Also ich habe heute mit PHP angefangen und wollte dann auch meine ersten einfachen Skripts schreiben. Unter anderem wollte ich eine Skript schreiben, welches testet, ob es sich bei einer bestimmten Zahl um eine Primzahl handelt.
Also hab ich mir überlegt, dass das Skript erst einmal kontrollieren muss durch wie viele Zahlen die zu testende Zahl teilbar ist. (Das habe ich noch hinbekommen) Jetzt wollte ich noch, dass das Skript bei einer Primzahl "Primzahl schreibt und bei einer Nicht Primzahl "Keine Primzahl" schreibt. Da ist mein Problem. Ich wollte das ganze mit if machen aber mir wird immer Primzahl angezeigt. PHP-Code:
|
hehe,
a) gidf: [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] b) funktionen sind auch dein freund. dann kannst du Code:
function /*bool */ isPrime (/* int */$i) { |
Okay Danke schon mal. Mich würde aber trotzdem interessieren, warum bei mir immer der obere Teil des If Bedingung angezeigt wird.
|
naja, debuggen, debuggen und nochmals debuggen :P
deine funktion sieht ja fast so aus: Code:
function isPrime ($i) { edit :) insbesondere ist: Code:
if ($count=2) { |
Zitat:
Bei PHP (ähnlich auch bei C/C++/Java) ist der Zuweisungsoperator = nicht das gleiche wie der Vergleichsoperator == (in PHP sogar noch === für typengerechte Vergleiche). PHP interpretiert alle Zahlen außer 0 und alle Zeichenfolgen außer einem leeren String "" als TRUE, die restlichen Fälle als FALSE. Code:
if ($count=2); Code:
$count = 2; Code:
if ($count == 2); Code:
if (2 == $count); |
Zitat:
Code:
return $count == 2; |
Noch ein kleiner Hinweis zum Algorithmus:
Wenn du eine Zahl N testen willst, ob sie eine Primzahl ist, reicht es aus bis M*M >= N zu testen. Zur Erklärung: Sofern die Zahl N bis M keinen Teiler hat, so wird sie darüber auch keinen mehr finden. Es reicht weitehrin aus, nur 2 und alle ungeraden Zahlen zu testen. Sollte N nicht durch 2 teilbar sein, ist sie durch keine gerade Zahl teilbar! Das halbiert schonmal die Zahlen, die untersucht werden müssen.. Beispiel: Zahl ist 301. 19*19 ist > 301 => folglich nur bis 17 prüfen. Zu Prüfen wären als Teiler: 2, 3, 5, 7, 9, 11, 13, 15, 17, Abbruch. Vielleicht realisierst du das mal. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:06 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.