note 123925 added to function.range

From: Date: Mon, 10 Jun 2019 17:45:40 +0000
Subject: note 123925 added to function.range
Groups: php.notes 
Request: Send a blank email to php-notes+get-211206@lists.php.net to get a copy of this message
<?php function natural_prime_numbers(array $range, bool $print_info = false) : array { $start_time = time(); $primes_numbers = array(); $print = ''; $count_range = count($range); foreach($range as $number){ $values_division_number = array(); if($number === 0 || $number === 1 || !is_int($number)){ // eliminate 0, 1 and other no integer continue; } if($number != 2 && $number%2 === 0){ // eliminate 2 and pairs numbers continue; } for($i = 1; $i <= $number; $i++){ $resultado_divisao = $number / $i; $values_division_number[$i] = $resultado_divisao; if($count_range <= 20){ // $count_range <= 20 (+ performance) $print .= PHP_EOL; $info = 'The number '.$number.' divided by the number '.$i.' is equal to: '.($number / $i); $print .= $info; if($i === $number){ $print .= PHP_EOL; } } array_walk($values_division_number, function($value, $index) use (&$values_division_number, &$number){ // reference change values // eliminate floats and others numbers not are equal 1 and own number if(is_float($value) && $value != $number && $value > 1){ unset($values_division_number[$index]); } }); $values_division_number = array_values($values_division_number); // reindex array // here we want only array with 2 indexes with the values 1 and own number (rule to a natural prime number) if(count($values_division_number) === 2 && $values_division_number[0] === $number && $values_division_number[1] === 1){ $primes_numbers[$number] = $number; } } } return array( 'length_prime_numbers' => count($primes_numbers), 'prime_numbers' => array_values($primes_numbers), 'print' => $print, 'total_time_processing' => (time() - $start_time).' seconds.', ); } var_dump(natural_prime_numbers(range(0, 11))); // here the range() function ;-) // Result: // array (size=3) // 'length_prime_numbers' => int 5 // 'prime_numbers' => // array (size=5) // 0 => int 2 // 1 => int 3 // 2 => int 5 // 3 => int 7 // 4 => int 11 // 'print' => string ' // O número 2 dividido pelo número 1 é igual a: 2 // O número 2 dividido pelo número 2 é igual a: 1 // O número 3 dividido pelo número 1 é igual a: 3 // O número 3 dividido pelo número 2 é igual a: 1.5 // O número 3 dividido pelo número 3 é igual a: 1 // O número 5 dividido pelo número 1 é igual a: 5 // O número 5 dividido pelo número 2 é igual a: 2.5 // O número 5 dividido pelo número 3 é igual a: 1.6666666666667 // O número 5 dividido pelo número 4 é igual a: 1.25 // O número 5 dividido pelo '... // **************************** // // // * Remember that the function is recursive, that is: a range of 5000 takes more than 1 minute on a processor Intel® Core™ i5-8250U (3.40 GHz). // // **************************** // ?> ---- Server IP: 208.43.231.9 Probable Submitter: 185.85.3.134 (proxied: 2804:d57:2e83:a100:c84:4179:5423:8093) ---- Manual Page -- http://php.net/manual/en/function.range.php Edit -- https://master.php.net/note/edit/123925 Del: integrated -- https://master.php.net/note/delete/123925/integrated Del: useless -- https://master.php.net/note/delete/123925/useless Del: bad code -- https://master.php.net/note/delete/123925/bad+code Del: spam -- https://master.php.net/note/delete/123925/spam Del: non-english -- https://master.php.net/note/delete/123925/non-english Del: in docs -- https://master.php.net/note/delete/123925/in+docs Del: other reasons-- https://master.php.net/note/delete/123925 Reject -- https://master.php.net/note/reject/123925 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#211206) next »