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>