在 N 个数组中,如果数字可以被数组中至少一个其他数字整除,则数字是一个X数。编程以查找给定数组中存在多少这样的数字
示例1:在数组[1,2,3]中,x数的数量是2(2和3,因为它们可以被数字1整除)
示例2:在数组[2,3,5,8]中,x数的数量为1(8可被2整除)
示例3:在数组[2,3,6,12]中,x数的数量为2(6可被2和3整除,12可被2和3和6整除)
我正在使用下面的代码,但我希望以一种方式优化它,如果数组大小增加,性能不应该妨碍:
$arr = array(2,3,6,12);
$count = 0;
function check_special_num($tnum, $tarr){
sort($tarr);
for($i=0;$i<sizeof($tarr);$i++){
if( $tnum % $tarr[$i] == 0 ){
return true;
}
}
return false;
}
for($i=0;$i<sizeof($arr);$i++){
$temp = $arr;
$num = $arr[$i];
array_splice($temp, $i, 1);
if( check_special_num( $num, $temp ) ){
$count += 1;
}
}
echo $count;
编码语言是PHP
答案 0 :(得分:0)
这种方式可能更快:
$arr = array(2,3,6,12);
function x_numbers_count($arr) {
$count = 0;
sort($arr);
foreach ($arr as $i => $number) {
for ($j = 0; $j < $i; $j++) {
if ($number % $arr[$j] == 0) {
$count++;
break;
}
}
}
return $count;
}
echo x_numbers_count($arr);
主要差异,可以预期提高绩效: