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

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

добрый день!
хочу найти наибольший простой делитель большого числа.
как? 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
как я понял мое число не входит в тип ИНТ.
как можно решить эту проблему?
спасибо
  • Вопрос задан
  • 2258 просмотров
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Stepik
    Язык программирования PHP
    1 неделя
    Далее
Пригласить эксперта
Ответы на вопрос 2
Можно попробовать скомпилировать пхп с поддержкой x64
Ответ написан
Комментировать
@adun3 Автор вопроса
видимо создать массив с таким количеством элементов плохая затея, будем думать:)
Ответ написан
Ваш ответ на вопрос

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

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