fibinatchii => g(31,0,1) > 1e6 => n < 31 * best found; g(18,144,154) = 1e6 * g(18,a,b) = 4181a + 2584b * g(19,a,b) = 6765a + 4181b, x > 18 => 4181b < 1e6 => b < 240 */ function fibMaker($a, $b) { yield $a; while(true) { yield $b += $a; yield $a += $b; } } function serie($n = 0, $max = 240) { while($n < $max) { yield $n++; } } function getX($a, $b, $goal = 1e6, $limit = 31) { $fib = fibMaker($a,$b); $index = 0; foreach($fib as $n) { if($n == $goal) { return $index; } if($n > $goal) { return 0; } if($index > $limit) { return 0; } $index++; } return 0; } $best = 1; foreach(serie(1) as $n1) { echo $n1, "\r"; foreach(serie(0) as $n2) { $x = getX($n1, $n2); if($x >= $best) { echo 'g(', $x, ',', $n1, ',', $n2, ') = 1e6', PHP_EOL; $best = $x; } } } echo ' ', PHP_EOL;