题目介绍:
幸福的数字是由以下过程定义的数字:从任何正整数开始,将数字替换为数字的平方和,并重复该过程,直到数字等于1,例如19是幸福数字。给定一个数,计算是不是幸运数。
<?php
$number = 91001;
if(!is_numeric($number)){
exit('error');
}
luckyNumber($number);
function luckyNumber($input_number){
$times = 0;
while ($input_number != 1 && $times < 10000) {
$num = 0;
while ($input_number != 0) {
$num += ($input_number % 10) * ($input_number % 10);
$input_number /= 10;
}
$input_number = $num;
$times++;
}
if($input_number == 1){
exit('lucky');
}else{
exit('unlucky');
}
}
思路:
while 该位上的数不为0{
1.计算给定数的每位上的数
2.计算其每位数上的平方和
}
如果平方和不为1,返回重新计算该平方和的各个位置上数的新的平方和,10000次后还不为1,可能就不是幸运数;
如果平方和为1,是幸运数字。
结果: