1.数字A除本身以外的因数之和为数字B,B除本身之外的因数之和为A,这样的数对称为相亲数,例如:220的真因数之和为1+2+4+5+10+11+20+22+44+55+110=284,284的真因数之和为 1+2+4+71+142=220,请找出2到10000之间所有的相亲数。
function index($m,$n){
$array = [];
define("N",$n);
for ($i = $m; $i < N; $i++){
for ($j = 1,$array[$i] = 0; $j < $i; $j++){
if ($i % $j == 0){
$array[$i] += $j;
}
}
}
for ($i = $m; $i < N; $i++){
$j = $array[$i];
if ($j > N){
continue;
}
if ($i == $array[$j] && $j > $i){
echo $i." 与 ".$j." 为相亲数";
echo "\n";
}
}
}
index(2,10000);
2.兄弟四人的年龄成一等差数列,他们四人的年龄相加是26,相乘是880,求以他们的年龄为前4项的等差数列的前20项。
function
lists
()
{
for
(
$a
=
1
;
$a
<=
4
;
$a
++
){
for
(
$n
=
1
;
$n
<=
6
;
$n
++
){
if
(
4
*
$a
+
6
*
$n
==
26
&&
$a
*
(
$a
+
$n
)
*
(
$a
+
$n
+
$n
)
*
(
$a
+
$n
+
$n
+
$n
)
==
880
){
for
(
$i
=
1
;
$i
<=
20
;
$i
++
){
$an
=
$a
+
(
$i
-
1
)
*
$n
;
echo
$an
.
" "
;
}
}
}
}
}
lists
();
3.水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153 = 1³ + 5³ + 3³,所以 153 是一个水仙花数;试找出所有三位数中的所有水仙花数。
function
ShuiXian
(
$n
,
$m
)
{
for
(
$i
=
$n
;
$i
<=
$m
;
$i
++
){
$arr
=
str_split
(
$i
);
if
(
$i
==
((
$arr
[
0
]
*
$arr
[
0
]
*
$arr
[
0
])
+
(
$arr
[
1
]
*
$arr
[
1
]
*
$arr
[
1
])
+
(
$arr
[
2
]
*
$arr
[
2
]
*
$arr
[
2
]))){
echo
$i
.
"\n"
;
}
}
}
ShuiXian
(
100
,
999
);
4.用递归方法计算一个数的阶乘。
function
fn2
(
$n
)
{
if
(
$n
==
0
||
$n
==
1
){
return
1
;
}
$fn
=
fn2
(
$n
-
1
)
*
$n
;
return
$fn
;
}
echo
fn2
(
4
);
5.堆排序是利用堆积树的数据结构所设计的一种排序算法,可以根据数组索引快速定位到指定的数据元素。用堆排序的方式将数组[49, 38,65, 97, 76, 13, 27]按照从小到大的方式排序。
function
orderBy
(
array
$array
)
{
$length
=
count
(
$array
);
for
(
$i
=
$length
/
2
-
1
;
$i
>=
0
;
$i
--
){
$array
=
adJustHeap
(
$array
,
$i
,
$length
);
}
for
(
$j
=
$length
-
1
;
$j
>
0
;
$j
--
){
$array
=
Swap
(
$array
,
0
,
$j
);
$array
=
adJustHeap
(
$array
,
0
,
$j
);
}
var_dump
(
$array
);
}
function
adJustHeap
(
array
$array
,
$i
,
$length
)
{
$temp
=
$array
[
$i
];
for
(
$k
=
$i
*
2
+
1
;
$k
<
$length
;
$k
=
$k
*
2
+
1
){
if
(
$k
+
1
<
$length
&&
$array
[
$k
]
<
$array
[
$k
+
1
]){
$k
++
;
}
if
(
$array
[
$k
]
>
$temp
){
$array
[
$i
]
=
$array
[
$k
];
$i
=
$k
;
}
else
{
break
;
}
}
$array
[
$i
]
=
$temp
;
return
$array
;
}
function
Swap
(
array
$array
,
$a
,
$b
)
{
$temp
=
$array
[
$a
];
$array
[
$a
]
=
$array
[
$b
];
$array
[
$b
]
=
$temp
;
return
$array
;
}
orderBy
([
49
,
38
,
65
,
97
,
76
,
13
,
27
]);