наименьший делитель числа больший чем 2, числа в диапазоне от 3 до 10^12, программа должна работать меньше 2 секунд


vned: жадный перебор не работает, если у вас тест на простоту через перебор от 3 до sqrt(n), то даже не беритесь
BobbyFresnel: Все прекрасно работает. 0.01с на двенадцатиразрядном простом числе. Двухядерный старый процессор 3 гГц.
BobbyFresnel: И еще: разберитесь, что такое жадные алгоритмы и чем он отличается от алгоритма перебора. Чтобы не смешить людей своими заявлениями.

Ответы

Ответ дал: BobbyFresnel
0

var

 n, p: int64;

 f: boolean;

begin

 Read(n);

 if n < 3 then

   Write('Нет решения')

 else

 begin

   f := false;

   p := 3;

   while (not f) and (sqr(p) <= n) do

   begin

     f := (n mod p = 0);

     p := p + 1

   end;

   if f then

     write(p - 1)

   else

     write(n);

 end;

end.


vned: скажу проще технокубок второй тур задача с вроде
vned: . Правильный подмногоугольник
ограничение по времени на тест2 секунды
ограничение по памяти на тест512 мебибайт
вводстандартный ввод
выводстандартный вывод
Задан правильный N-угольник. Требуется выбрать наименьшее количество его вершин, которые также образуют правильный многоугольник.

Входные данные
Входные данные содержат одно целое число N (3≤N≤1012).

Выходные данные
Выведите одно число — наименьшее количество вершин заданного многоугольника, которые образуют правильный многоугольник.
vned: вот она
BobbyFresnel: Ну я не собираюсь для вас кубки зарабатывать. Вы написали задачу - я ее сделал, тест у меня прошел. вчетверо быстрее ваших ограничений.
vned: это не кубок
BobbyFresnel: "кажу проще технокубок второй тур"
vned: я ошибся
vned: это не из него задача
BobbyFresnel: Проверил сейчас неа числе Кэррола 274876858367 - 1, 06 с СТОКРАТНЫЙ прогон. Т.е. реально время составило 0.011 с. Так что не надо "ля-ля" и дурачков тут искать
nelle987: Имело бы смысл сразу проверять на 999999999989 - это самое большое простое число, подходящее под условие. Но и на нём время существенно меньше двух секунд
Вас заинтересует