0
我想用蠻力解決最新的項目歐拉問題(我知道這不是最好的解決方案,但直到我弄清楚,我錯了,我會用它)。歐拉項目:413
我不明白,我在這裏做錯了什麼。我敢肯定,我產生正確的數字,但結果仍然是錯誤的與所提供的數字:
function number_split($nb)
{
GLOBAL $arr;
$length = strlen($nb);
if($length == 1)
return true;
$count = 0;
for($i=1; $i<$length; $i++) {
for($j=0; $j<=$length-$i; $j++) {
$temp = substr($nb, $j, $i);
if($temp % $length == 0) {
$count++;
if($count > 1)
return false;
}
}
}
return ($count == 1);
}
$lim = 3;
$res = 0;
$start = gmp_strval(gmp_pow(10, $lim-1));
$end = gmp_strval(gmp_pow(10, $lim));
for($i=$start; $i<$end; $i++) {
$res += number_split($i);
}
echo $res;
我得到378那裏應該是389。我在做什麼錯在這裏?
我不想要一個答案,只是在我的邏輯錯誤。
問題:
'例如,5671是一個4位數的獨生子號碼。在它的所有子串5,6,7,1,56,67,71,567,671和5671'中。這個例子清楚地表明,數字本身也被使用。 – Peon
@DainisAbols:是的,數字*應該被使用,但是你的代碼不會使用它。 – interjay
非常感謝,我想我已經明白了(雖然我的腳本會運行一段時間來證明它)。我在搜索3位數字時也看到錯誤的1位和2位數字;) – Peon