Project Euler Solutions by Ross Marks

<?php
/*****************************
 * ProjectEuler - Problem 21
 * By Ross Marks
 *****************************
 * Let d(n) be defined as the sum of proper divisors of n (numbers less than n which divide evenly into n).
 * If d(a) = b and d(b) = a, where a ≠ b, then a and b are an amicable pair and each of a and b are called amicable numbers.
 * 
 * For example, the proper divisors of 220 are 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 and 110; therefore d(220) = 284. The proper divisors of 284 are 1, 2, 4, 71 and 142; so d(284) = 220.
 * 
 * Evaluate the sum of all the amicable numbers under 10000.
 ****************************/

$awns 0;
$numbers = array();

for(
$i 1$i 10000$i++){
    
$count 0;
    
$divisors proper_divisors($i);
    foreach(
$divisors as $toadd)
        
$count += $toadd;

    
$numbers[$i] = $count;
}

foreach(
$numbers as $no => $div)
    if(@
$numbers[$div] == $no && $no != $div)
        
$awns += $div
    
echo 
"Awnser: $awns";


function 
proper_divisors($number){
    for (
$n 1$n ceil($number/2)+1$n++)
        if (!(
$number $n))
            
$divisors[] = $n;

    return 
$divisors;
}
/*
array[$no] = $sum_of_divisors

-- loop to generate (0 - 10,000) ---

then loop array $key -> $val
  if array[$val] == $key // amicable pair found

add all pairs up to win
*/
?>