Предмет: Информатика,
автор: EN0Tymnik
информатика 10класс 25б
На вход передаётся 2 натуральных числа a и b, не превышающих 65536.
Необходимо вывести через пробел все простые числа, заключённые в промежутке между a и b.
Пример:
Ввод:
11 32
Ответ:
13 17 19 23 29 31
asv40707:
вы хотите тупым перебором или решетом Эратосфена?
Ответы
Автор ответа:
1
Ответ:
Решето Эратосфена
Объяснение:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
using namespace std;
int pr[1000077];
int main()
{
#ifdef _DEBUG
//freopen("input.txt", "r", stdin);
#endif // _DEBUG
int a, b;
cin >> a >> b;
if (a > b)
{
swap(a, b);
}
for (int i = 2; i <= b; i++)
{
if (pr[i] == 2)
{
continue;
}
pr[i] = 1;
for (int j = i + i; j <= b; j += i)
{
pr[j] = 2;
}
}
for (int i = a + 1; i < b; i++)
{
if (pr[i] == 1)
{
cout << i << ' ';
}
}
}
{
swap(a, b);
}
Похожие вопросы
Предмет: Английский язык,
автор: anastaint
Предмет: Русский язык,
автор: Lady1001
Предмет: Окружающий мир,
автор: светккка16
Предмет: Қазақ тiлi,
автор: sailauulydaryn
Предмет: Английский язык,
автор: 22822148