बनाम मैं Project Euler से एक समस्या को हल करने (BTW, समस्या 25) चाहते हैं, और मैं अजगर में एक समाधान पाया:अजगर पीएचपी गति
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 मिनट से अधिक, और अभी भी की गणना ...
ले लिया मुझे पता है कि अजगर तेजी पीएचपी से माना जाता है , लेकिन फिर भी यह इतना बड़ा अंतर नहीं होना चाहिए। परिणामों को तेज़ी से प्राप्त करने के लिए मेरे 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);
तो तुम PHP में अजगर के रूप में एक ही गति से परिणाम प्राप्त कर सकते हैं।
हाँ, आप सही हैं। मुझे पहले से ही मिल गया है :) +1। – Centurion