Решаю задачу, условие на скрине и во втором P.S. .

Для граничного теста (n=10000) время больше двух секунд. Что делать?
P.S. https://pastebin.com/9AUCm7hd
P.S. Простое число — это натуральное число, которое имеет ровно два различных натуральных делителя: единицу и самого себя. Последовательность простых чисел начинается так: 2, 3, 5, 7, 11, 13, 17, 19, 23,...
Напишите программу, которая выведет все простые числа на отрезке [1,n] в порядке возрастания.
Входные данные
В единственной строке входных данных записано целое число n (1 ≤ n ≤ 10000).
Выходные данные
Выведите все простые числа на отрезке [1,n] по возрастанию по одному в строке.
Пример(ы)
input.txt
25
output.txt
2
3
5
7
11
13
17
19
23

24 ответов

44 просмотра

решето эратосфена

1. У меня твой код работает гораздо быстрее, за 16 мс. Ты с флагом -O2 компилировал? 2. Алгоритм асимптотически неоптимален

Да в коде вроде и так оно

В коде N раз запускается проверка на простоту

А зачем short?

...- Автор вопроса

задача в списке тех, которые можно решить без массивов, и я чёт хз как можно именно реализовать вычёркивание элементов без массивов). Если руководствоваться https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%88%D0%B5%D1%82%D0%BE_%D0%AD%D1%80%D0%B0%D1%82%D0%BE%D1%81%D1%84%D0%B5%D0%BD%D0%B0

Почему бы не вынести проверку на простоту в отдельную функцию? Имхо, так год становиться более читаемым

Ну, заведи массив и вычеркивай. Кажется, памяти на это с запасом хватит

Мм ну выводить из сразу?

...- Автор вопроса

я хз как visual studio компилит автоматически, я пробовал не debug версию, а release, такой же результат.

...- Автор вопроса

там 1 <= n <= 10000, поэтому я для экономии памяти выбрал его

Ну я бы попробовал g++.

...- Автор вопроса

там, где я решаю, в списках компиляторов ток visual studio c++ 2010, и я хз что под этим подразумевается и как он компилит)

https://brestprog.by/topics/factorization/

...- Автор вопроса

Спасибо большое, годная статья!

...- Автор вопроса

?

...- Автор вопроса

А разве это не будет дольше из-за вызовов функций?

Да фигню сказанул

Скорее всего, компилятор в режиме релизной сборки догадается подставить код функции проверки внутрь мейна. К тому же затраты на вызов функции пренебрежимо малы по сравнению с той работой, которую она должна совершить.

В плюсах же вроде можно inline помечать

...- Автор вопроса

Как я понял решето эратосфена работает следующим образом: создаём массив с числами от 2 до n включительно, вычёркиваем каждый второй начиная с 2^2, затем каждый третий начиная с 3^2, и так вычёркивать начиная с i^2, пока он меньше n.

Ну только делать это надо не для каждого i, а только для простых

...- Автор вопроса

Это можно сделать если i пустить по массиву, т.к. он будет подчищаться и каждый следующий i-ый будет простой (смотрел на гифку из википедии по ссылке выше в разделе алгоритм).

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

Обсуждают сегодня

Всем привет Есть достаточно базовая задача: Дан неориентированный граф. Требуется определить, есть ли в нем цикл, и, если есть, вывести его. Входные данные подаются в виде ма...
Αλeksandr
10
Привет всем. Подскажите, как можно данную задачу более менее эффективно решить? В столовой одного известного Завода вот-вот начнётся обед. На обеде есть три гарнира — макарош...
Vitaliy
6
всем привет. У меня есть неупорядоченный массив точек(в моем случае в трёхмерном пространстве). Есть критерий связанности точек: если евклидово расстояние между ними меньше за...
Павлик Ливаткин
31
Доброе утро. Такой вопрос: есть ли какие-то практически полезные меры вычислительной мощности (в смысле computational complexity) для реальных машин, с ограниченными ресурсам...
Yaroslav Schekin
15
Всем привет Пытаюсь решить следующую задачу: https://informatics.msk.ru/mod/statements/view.php?id=6992&chapterid=101#1 Строка S была записана много раз подряд, после чего из ...
Αλeksandr
10
Здравствуйте. Есть задача нужно найти наименшое число P где фактриал P делиться на 10^N. Ограничения 10^9. Знаю что нужно найти такой P в конце как минимум N нулей. Решение с ...
. Azmiddin
20
Друзья, практический вопрос надо счиать скользящую медиану в последовательности по заданному окну (длины N) тупой вариант - взять значения в окне, отсортировать, взять элеме...
Стас Выщепан
17
Должна-ли работать такая стратегия: Мы каждую секунду бросаем монетку - орел или решка. Если орел - покупаем акцию на все деньги, если у нас есть деньги, или продаем все акци...
George Polevoy
13
#pragma once #include <iostream> #include <vector> template <typename T, typename Comp = std::less<T>> class Heap { public: Heap() = default; Heap(const std::vector<T>&...
Степан
1
Как можно сжимать временные ряды в памяти? У меня есть исторические стоимости ценных бумаг. Данные для каждой минуты в истории OHLC (Open, High, Low, Close). Соответственно, O...
George Polevoy
10
Карта сайта