Задать вопрос

Решето эратосфена для большого числа?

добрый день!
хочу найти наибольший простой делитель большого числа.
как? 1)прорешетить все простые до моего числа. 2)проверить делиться ли каждое на мое число. 3)выбрать максимальное из отобранных.
Это первое что пришло в голову. для поиска всех простых чисел нашел алгоритм "Решето Э."
define("LIMIT", 600851475143);
        define("SQRT_LIMIT",floor(sqrt(LIMIT)));
    
        $S = array_fill(2,LIMIT-1,true);

        for($i=2;$i<=SQRT_LIMIT;$i++){
        if($S[$i]===true){
        for($j=$i*$i; $j<=LIMIT; $j+=$i){
            $S[$j]=false;
        }
        }
        }
        for($n=2; $n<=count($S); $n++)
        {
            if($S[$n]) 
                {
                   echo ' '.$n; 
                }
        }

но сразу выдает ошибку: array_fill(): Number of elements must be positive
как я понял мое число не входит в тип ИНТ.
как можно решить эту проблему?
спасибо
  • Вопрос задан
  • 2257 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Можно попробовать скомпилировать пхп с поддержкой x64
Ответ написан
Комментировать
@adun3 Автор вопроса
видимо создать массив с таким количеством элементов плохая затея, будем думать:)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы