0 голосов
спросил от в категории C
Начнем с того, что ваш код будет скомпилирован - это не будет, потому что фигурные скобки находятся не в том месте, помещая часть вашего кода вне метода main .

И нет, эта программа не является «производительностью» - потому что вы повторяете потенциально огромный диапазон чисел снова и снова: вы проверяете, будет ли каждое число в диапазоне от 2 до 1 000 000 является простым, тогда вы проверяете, является ли каждое число в диапазоне от 2 до 1000,001 простым, тогда вы проверяете, является ли каждое число в диапазоне от 2 до 1000,002 простым, тогда вы проверяете ...

Это потрясающе расточительно. Вместо этого, выработайте все простые числа в диапазоне один раз и сохраните их. Затем распечатайте их все.

Меня? У меня возникнет соблазн постоянно хранить их: записывайте простые числа в файл и читайте их обратно при загрузке приложения - если диапазон находится внутри диапазона файлов, вам не нужно больше работать, просто печатать. Если это не так, то сгенерируйте новые простые числа и добавьте их в файл в следующий раз. После нескольких запусков вашему приложению, вероятно, не нужно вычислять какие-либо простые числа для большинства проверок ...

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
0 голосов
ответил от
Цитата:
моя проблема - это эта программа не работает

Нет, ваша проблема в том, что эта программа неверна и ничего не печатает!
Если ваша настоящая программа печатает правильный результат, вы сделали ошибка при копировании его здесь.
Цитата:
эта программа не работает

Это означает, что вы хотите, чтобы ваша программа была как можно быстрее, это оптимизация . Это означает, что вы понимаете, что ваша программа и причина, по которой она это делает.
Первым шагом является чтение документации о проблеме целая факторизация .
br> Как вы знаете, что вам нужно остановить проверку потенциальных факторов?
вы остановитесь на num/2, в чем причина?
Когда вы проверяете факторы 101 вручную, вы остановитесь на 50 или остановитесь раньше?
Если вы остановитесь на 50, потому что 51 * 2 больше, чем num, вы должны воспользоваться тем преимуществом, что уже знаете, что 2 уже проверен и не является фактором 101, ни 3 ...
Когда вы это поняли и внесли необходимые изменения, производительность будет лучше, но все же далека от оптимальной.

Также полезно создать функцию isprime для разделения проблем.
0 голосов
ответил от
Вы должны установить флаг в начале вашего внутреннего цикла, чтобы указать, что число является простым. Затем перед тем, как ваш оператор break установил его в false , чтобы указать, что он не является простым. Затем вы можете напечатать номер после завершения цикла, если флаг по-прежнему установлен в true .

Категории

Добро пожаловать на сайт DraftingCode Q&A (ИТ ответы), где вы можете задавать вопросы и получать ответы от других членов сообщества.

Связанных вопросов не найдено

...