note 123925 added to function.range
| From: | ccb_bc at hotmail dot com | 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