I Project Euler (MEZUNLARI, sorunu 25) bir sorunu çözmek istiyorsanız, ve ben Python bir çözüm bulundu:
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)
Bu hesaplamak için 1.5 saniye sürdü.
PHP aynı uygulanan, bu kodu:
$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);
Ve daha 30 dakika sürdü ve hala hesaplama ...
Python, PHP daha hızlı kabul edilir olduğunu biliyorum, ama yine de o kadar büyük bir fark olmamalıdır. Bunu yapmanın bir yolu varsa, daha hızlı sonuç almak için benim PHP kod geliştirmek için nasıl?
EDIT:
I edit this post based on comments below so first my solution was not going to work. One solution can be instead of old while to put this one:
while (strlen(number_format($fibonacci, 0, '', '')) < $limit){ ... }
Fakat yine büyük bir hız sorunu nedir.
Yani nihai çözüm kullanarak BCMath edilir:
$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);
Yani PHP, Python gibi aynı hızda sonuçlar alabilirsiniz.