echte Teiler finden (Verdammtes php...)
-
function find_divisors( $number ) { $delim = sqrt( $number ); $divisors = array( ); for( $i = $number / 2; $i >= $delim; $i-- ) { if( ( $number % $i ) == 0 ) { array_push( $divisors, $i ); array_push( $divisors, $number / $i ); } } rsort( $divisors, SORT_NUMERIC ); $divisors = array_unique( $divisors ); return $divisors; }
liefert bei $number = 9 leider das unglaubliche Ergebnis { 2, 3 }.
Wo liegt der Hund begraben?
Greets, Swordfish
-
du hast ein problem mit den doublewerten.
denk mal darüber nach, was bei $number / 2 rauskommt.. wenn eine fließkommazahl kommt, wird der nachkommateil abgeschnitten.schau dir ceil an, könntest du zum aufrunden nutzen:
http://www.php.net/manual/en/function.ceil.php
for( number / 2);ich würde den algorithmus insgesamt nochmal überdenken
-
Meingott, natürlich. Ich hab den Fehler dann auch noch "explizit" gemacht und auch versucht nach int zu casten...
Werd ceil nehmenelise schrieb:
ich würde den algorithmus insgesamt nochmal überdenken
Kannst dazu noch ein bisschen was genaueres sagen, biiieettee.
Greetz, Swordfish