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

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

03.05.2017, 19:51. Показов 7667. Ответов 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
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru