Предмет: Информатика, автор: vned

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


vned: жадный перебор не работает, если у вас тест на простоту через перебор от 3 до sqrt(n), то даже не беритесь

Ответы

Автор ответа: 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: вот она
vned: это не кубок
vned: я ошибся
vned: это не из него задача
nelle987: Имело бы смысл сразу проверять на 999999999989 - это самое большое простое число, подходящее под условие. Но и на нём время существенно меньше двух секунд
Похожие вопросы
Предмет: Математика, автор: ruslannurlan1303