У меня есть следующий код:
<?php
$cups = array();
for($i=0; $i<500; $i++){
$cups[$i] = 0;
}
for($x=1; $x<500; $x++){
for($y=$x; $y<500; $y+=$x){
$cups[$y] = !$cups[$y];
}
}
foreach($cups as $key => $value){
if($value == 1){
echo "{$key}, ";
}
}
?>
Как видите, я заполняю массив 500 нулями, перебираю его дважды, а затем распечатываю числа кубков, в которых есть «1»:
1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484,
Как видите - выводит квадраты.
Я думаю, что это явление впечатляет, но меня интересует математическое объяснение -
Почему происходит эта картина?
Спасибо!