PHP, Generating Primes, What's Wrong -
what's wrong this? conditional statement looks solid enough, yet numbers included
function generate_primes(){ $max = 100; $primes = array(); for($current_pointer = 1; $current_pointer <= $max; $current_pointer++){ for($divider = 1; $divider <= $current_pointer; $divider++){ //if(in_array($divider, $primes)){ if(($current_pointer % $divider === 0) && ($divider !== 1) && ($divider === $current_pointer)){ $primes[] = $current_pointer; } //} } } print_r($primes); } generate_primes();
you need deal case divider divide evenly current_pointer divider doesn't equal current pointer. in case, need jump out of loop (i.e. you've found divides evenly, number isn't prime). written, loops hit case of dividing number itself, numbers succeed.
in other words, you're trying test first successful divider being number itself, that, have stop trying when hit different successful divider.
if(($current_pointer % $divider === 0) && ($divider !== 1)){ if ($divider === $current_pointer) $primes[] = $current_pointer; } else { continue; // continue makes stop testing current pointer , go on next }
Comments
Post a Comment