Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.63/40: Рейтинг темы: голосов - 40, средняя оценка - 4.63
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337

Вывести числа в порядке возрастания, по одному в строке. Если между M и N нет простых - вывести "Absent"

03.05.2017, 19:51. Показов 7810. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Снова всем здравствуйте! Вот до боли знакомая задача, но на промежутке функция работает не оптимально, хотя сама функция оптимизирована. 13/15 (два теста не прошли по времени). Кто-нибудь знает почему? Может быть, использовать решето Эратосфена?

Условие:

Простые числа (2)

Вывести все простые числа от M до N включительно.

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

В первой строке находятся разделённые пробелом M и N (2 ≤ M ≤ N ≤ 1000000).

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

Вывести числа в порядке возрастания, по одному в строке. Если между M и N включительно нет простых - вывести "Absent".

Мой код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <cmath>
 
using namespace std;
 
bool simple(int N)
{
    for (int i = 2; i <= sqrt(N); i++)
        if (N % i == 0)
            return false;
    return true;
}
 
int main()
{
    int M, N, k;
    cin >> M >> N;
    k = 0;
    for (int i = M; i <= N; i++)
    {
        if (simple(i))
        {
            cout << i << endl;
            k++;
        }
    }
    if (!(k))
        cout << "Absent" << endl;
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.05.2017, 19:51
Ответы с готовыми решениями:

Пользователь вводит два числа Определить, равны ли эти числа, и если нет, вывести их на экран в порядке возрастания
4. Пользователь вводит два числа. Определить, равны ли эти числа, и если нет, вывести их на экран в порядке возрастания.

Даны целые a,b,c. Вывести на экран нечётные числа в порядке возрастания, если же таких чисел нет, то выдать сообщение, ч
Даны целые a,b,c. Вывести на экран нечётные числа в порядке возрастания, если же таких чисел нет, то выдать сообщение, что нечётных чисел...

Вывести все цифры заданного с клавиатуры числа по одному разу в порядке их возрастания
Вывести все цифры заданного с клавиатуры числа по одному разу в порядке их возрастания. Задача на множества.

24
354 / 135 / 28
Регистрация: 16.12.2012
Сообщений: 607
Записей в блоге: 1
05.05.2017, 18:41
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Fixer_84 Посмотреть сообщение
и вместо вектора использовать массив
Можешь попробовать сделать reserve
Цитата Сообщение от Fixer_84 Посмотреть сообщение
контейнером <set>
Тут точно нет. Зачем тебе здесь find?
Также, попробую не заводить счетчик (а использовать bool)
Без разницы
выводить через printf()
Так сделать стоит

Добавлено через 45 секунд
Цитата Сообщение от Fixer_84 Посмотреть сообщение
Неужели нельзя переделать этот метод для [M, N]?
Нет. Нельзя.
Посмотри на код.
Почитай e-max.
Попытайся понять почему
1
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
05.05.2017, 18:42  [ТС]
Ромаха, вы не поверите, но получилось

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <vector>
#include <cmath>
 
using namespace std;
 
int main()
{
    int M, N;
    cin >> M >> N;
    vector<int> lp(N+1, 0);
    vector<int> pr;
    for (int i = 2; i <= N; ++i)
    {
        if (lp[i] == 0)
        {
            lp[i] = i;
            pr.push_back(i);
        }
        for (int j = 0; j < (int)pr.size() && pr[j] <= lp[i] && i * pr[j] <= N; ++j)
        {
            lp[i * pr[j]] = pr[j];
        }
    }
    bool p = true;
    for(int i = 0; i < pr.size(); i++) 
    {
        if (pr[i] >= M) 
        {
        printf("%d\n", pr[i]);
        p = false;
        }
    }
    if (p) cout << "Absent" << endl;
    system("pause");
    return 0;
}
Добавлено через 42 секунды
Ромаха, спасибо за помощь! Все тесты сданы!
0
354 / 135 / 28
Регистрация: 16.12.2012
Сообщений: 607
Записей в блоге: 1
05.05.2017, 18:44
Ну и прекрасно.
1
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
05.05.2017, 18:48  [ТС]
Спасибо всем огромное!
0
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
05.05.2017, 20:08
Цитата Сообщение от Fixer_84 Посмотреть сообщение
Но ведь можно как-то уменьшить размер массива
в теории можно, т.к. 2 - единственное четное простое число, следовательно массив уменьшается в 2 раза
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.05.2017, 20:08

Вывести все числа от A до B включительно, в порядке возрастания, если A <B, или в порядке убывания в противном случае
Вариант 1 Даны два целых числа A и В (каждое в отдельной строке). Выведем все числа от A до B включительно, в порядке возрастания, если A...

Числа в строке вывести в порядке возрастания
Дана строка символов, состоящая из произвольных десятичных цифр, разделенных пробелами. Вывести на экран числа этой строки в порядке...

Вывести на экран числа в строке в порядке возрастания
Здравствуйте. Цель задания, вывести из строки, где числа разделены пробелами, эти числа в порядке возрастания. Сам по себе код вполне...

Вывести все числа между A и B включительно в порядке возрастания
Выведите на экран все числа между A и B включительно в порядке возрастания. Формат входных данных Вводятся два целых числа А и В (|А|,...

Вывести в порядке возрастания все целые числа, между A и B
Даны два целых числа A и B (A &lt; B). Вывести в порядке возрастания все целые числа, рас-положенные между A и B(в том числе A и B), a также...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru