我想從Project Euler解決問題(順便說一句,問題25),而且我發現Python中的解決方案:的Python與PHP速度
fibonacci = 1
old1 = 0
old2 = 1
limit = 1000
i = 1
while len(str(fibonacci)) < limit:
fibonacci = old1 + old2
old1 = old2
old2 = fibonacci
i = i + 1
print(i)
花了1.5秒計算。
我實現了在PHP一樣,這是代碼:
$fibonacci = 1;
$old1 = 0;
$old2 = 1;
$limit = 1000;
$i = 1;
while (strlen((string)$fibonacci) < $limit){
$fibonacci = $old1 + $old2;
$old1 = $old2;
$old2 = $fibonacci;
$i = $i + 1;
}
print($i);
而且它花了超過30分鐘,並仍在計算...
我知道了Python被認爲比PHP快,但它應該沒有那麼大的差別。如果有辦法做到這一點,如何提高我的PHP代碼以獲得更快的結果?
編輯:
我編輯基於以下所以首先我的解決辦法行不通的評論這一職務。 一種解決方案可以代替老而把此一:
while (strlen(number_format($fibonacci, 0, '', '')) < $limit){ ... }
但同樣是一個很大的速度問題。
所以最終的解決方案是使用BCMath:
$fibonacci = '1';
$old1 = '0';
$old2 = '1';
$limit = 1000;
$i = 1;
while (strlen($fibonacci) < $limit){
$fibonacci = bcadd($old1, $old2);
$old1 = $old2;
$old2 = $fibonacci;
$i = $i + 1;
}
echo $fibonacci . "<br />";
print($i);
所以,你可以在同樣的速度在Python的PHP的結果。
是的,你是對的。我已經有了相同的:) +1。 – Centurion 2010-11-12 10:02:00