我正在處理項目歐拉問題3,但我的代碼給出了一個奇怪的錯誤。錯誤是:項目歐拉#3 - 得到奇怪的致命錯誤
Fatal error: Can't use function return value in write context in D:\Google Drive\ITvitae\PHP5\ProjectEuler\PE3-PrimeFactor2.php on line 52
這是我運行代碼:
<html>
<body>
<?php
ini_set('memory_limit', '1024M');
ini_set('set_time_limit', '120');
$max = 1000000;
#$max = 600851475143;
$primes = array();
// Define sqrt ceiling
$maxSqrt = ceil(sqrt($max));
function isPrime($num) {
// 1 is not prime
if ($num == 1)
return false;
// 2 is prime
if ($num == 2)
return true;
// Removes all even numbers
if ($num % 2 == 0) {
return false;
}
// Check odd numbers, if factor return false
// The sqrt can be an aproximation, round it to the next highest integer value.
$ceil = ceil(sqrt($num));
for ($i = 3; $i <= $ceil; $i = $i + 2) {
if($num % $i == 0)
return false;
}
return true;
}
//Push latest prime into array
for ($i = 2; $i <= $maxSqrt; $i++) {
if (isPrime($i)) {
array_push($primes, $i);
}
}
// Check whether $max is divisible by $primes($j)
for ($j = 0; $j <= count($primes); $j++) {
if ($max % $primes($j) = 0) {
$max = $max/$primes($j);
}
}
//echo "<pre>";
//var_dump($primes);
//echo "</pre>";
echo array_pop($primes);
?>
</body>
</html>
52線是
if ($max % $primes($j) = 0) {
下//檢查$最大是整除$素數( $ j)
我從來沒有見過這個錯誤,我不明白它爲什麼給它。在我的腦海裏,邏輯完美無瑕(不可避免,因此不是)。這裏出了什麼問題?
編輯:把它改成
if ($max % $primes($j) == 0) {
但它告訴我函數名稱必須是一個字符串。我不明白。
的[3不同等於](http://stackoverflow.com/questions/2063480/the-3-different-equals) –
'='是分配可能的複製; ==是比較;你不能分配給一個表達式,只能分配給一個變量......這就是錯誤意味着在這種情況下 –
我試過了,但那也沒有效果。它告訴我「函數名稱必須是字符串」。我更少理解這一點。 – Sander