Project Euler Problem 87
by michiganfootball20
HTML
<html>
<head>
<title>Online PHP Script Execution</title>
</head>
<body>
<?php
function buildPrimeArray($n){
$ints = array();
$primes = array(2);
for($i = 1; $i < $n; $i++) $ints[$i] = true;
//Loop through possible i values
for($i = 1; $i < (sqrt(2*$n+1)-1)/2; $i++){
//Loop through possible j values
for($j = $i; $j < (($n-$i)/(2*$i+1)); $j++){
$ints[intVal($i+$j+2*($i*$j))] = false;
}
}
foreach($ints as $val => $bool) {
if($bool) $primes[] = 2*$val+1;
}
return $primes;
}
$primes = buildPrimeArray(10000);
$results = array(28);
$cycles = 1;
$i = 0;
$j = 0;
$k = 0;
$max = 50000000;
do {
do {
do {
//Increment k
$k++;
$num = pow($primes[$i],2)+pow($primes[$j],3)+pow($primes[$k],4);
if($num < $max) $results[$num] = true;
} while($num < $max);
//Reset all, increment j
$j++;
$k = 0;
$num = pow($primes[$i],2)+pow($primes[$j],3)+pow($primes[$k],4);
if($num < $max) $results[$num] = true;
} while($num < $max);
//Reset all, increment i
$i++;
$j = 0;
$k = 0;
$num = pow($primes[$i],2)+pow($primes[$j],3)+pow($primes[$k],4);
if($num < $max) $results[$num] = true;
} while($num < $max);
echo count($results);
?>
</body>
</html>