М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Redimer
Redimer
12.03.2021 01:23 •  Информатика

Простое число По введённому натуральному числу K, не превосходящему 100000, выдать K-е по счёту простое число.

Входные данные

Дано натуральное число K.

Выходные данные

Выведите K-е простое число.

Примеры
Ввод
Вывод
3
5
1
2
Ограничения
Время выполнения: 3 секунды

👇
Ответ:
509788866
509788866
12.03.2021

n=int(input())

count=0

number=0

while count<=n:

   simple=True

   number+=1

   for i in range(2,number//2 + 1):

       if number%i==0:

           simple=False

           break

   if simple:

       count+=1

print(number)

4,5(83 оценок)
Ответ:
mashkabaku
mashkabaku
12.03.2021

Первая - прямой перебор, но хорошо оптимизированный: с целочисленным вычислением корня для короткой схемы на квадратах. У меня на компьютере работает впритык, за 2.8 для 100k. Если бы не питон - укладывалось бы, но лень переписывать. На тестовом сервере скорее всего не уложится в таймлимит, просто для информации, что так тоже можно:

def prime_count(N):

   primes = [2, 3]

   i, s, s2 = 5, 3, 9

   while len(primes) < N:

       while s2 <= i:

           s += 1

           s2 = s*s

       flag = True

       for p in primes:

           if p > s+1:

               break

           if i % p == 0:

               flag = False

               break

       if flag:

           primes.append(i)

       i += 2

   return primes[N-1]

print(prime_count(int(input(

Вторая: обычное решето Эратосфена. Сравни, насколько короче получилось =) Число 13 выведено эмпирически, для K<=100000 оно подходит, но потом будет маленьким. В общем случае там должна стоять величина log2(N) с каким-то множителем по теореме о плотности простых чисел. Для 100k работает раз в 15 быстрее, так что в лимит уложится точно:

def eratosthenes(N):

   i, numbers = 0, [True] * (13 * N)

   for index in range(N):

       while not numbers[i]: i += 1

       numbers[i::i+2] = [False] * len(numbers[i::i+2])

   return i+2

print(eratosthenes(int(input(

4,6(28 оценок)
Открыть все ответы
Ответ:
ekaterinaf79
ekaterinaf79
12.03.2021
Деление до конца без штрафов возможно, если количество орехов в кучке будет какой-либо степенью двойки (2, 4, 8, 16, 32, 64, 128, 256, 512). Число 577 - нечетно, следовательно, его можно представить <четное>+<нечетное>. При делении 576+1 получим первый штраф. Число 576 не является степенью двойки, поэтому необходимо опять поделить орехи на неравные кучки: 512+64 (второй штраф). 512 и 64 - степени двойки, значит дальнейшее разделение можно выполнить без штрафов.
Можно делить, например, так:
1. 512 и 65 орехов (штраф 1 рубль)
2. 65 делим на 2 кучки: 64 и 1 (штраф 1 рубль)
3 и все следующие операции: кучки из 512 и 64 орехов делим на равные кучки (512: 256 и 256, 256: 128 и 128; 64: 32 и 32, 32: 16 и 16 и т.д.).
Получаем, что минимальная сумма штрафа = 2 рубля.
4,7(18 оценок)
Ответ:
izeddin2002
izeddin2002
12.03.2021
Использовать источники открытого огня (спички, зажигаприносить на уроки легковоспламеняющиеся вещества (лаки, краски, порох и т.п.); лки, петарды и др.); работать с электроприборами, имеющими повреждения корпуса или изоляции соединительных проводов; вставлять в отверстие приборов посторонние предметы; приносить и самовольно подключать какое-либо оборудование; производить самовольное переключение разъёмов оборудования; вставлять в отверстие приборов посторонние предметы; работать с электроприборами, имеющими повреждения корпуса или изоляции соединительных проводов;
4,6(73 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ