Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
kruglov1
0 / 0 / 1
Регистрация: 04.10.2014
Сообщений: 38
#1

Найти простые числа в заданном диапазоне с помощью решета Эратосфена - C++

12.09.2015, 22:37. Просмотров 796. Ответов 2
Метки нет (Все метки)

Задача: вывести простые числа в диапозоне от А до В.
( 2 ≤ А и ≤ В ≤ 100000 )
http://www.cyberforum.ru/cpp-beginners/thread724058.html
Если таких чисел нет - вывести "Fol".
Желательно с помощью решета Эратосфена.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2015, 22:37
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти простые числа в заданном диапазоне с помощью решета Эратосфена (C++):

Вывести простые числа от 1 до 1000000 с помощью решета Эратосфена
Вывести список простых чисел от 1 ого до млн.(1000000) с помощью решета...

Найти простые числа пользуясь методом решета Эратосфена НЕ используя массивы
Задача формулируется простыми словами: найти простые числа 0..N пользуясь...

Найти простые числа в заданном диапазоне (циклы)
Найти простые числа в диапазоне от 2 до 1000 цикл в цикле с помощью циклов for

Найти все простые числа в заданном диапазоне
Найти все простые числа в промежутке между натуральными числами а и b (а >...

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

2
Байт
Эксперт C
17756 / 11781 / 2448
Регистрация: 24.12.2010
Сообщений: 23,681
13.09.2015, 00:03 #2
kruglov1, Ваши соображения, попытки, наброски?
А внизу странички смотрели? Ведь там мно-о-ого интересного...
0
gledor
129 / 24 / 12
Регистрация: 12.08.2015
Сообщений: 154
Завершенные тесты: 1
13.09.2015, 00:17 #3
Лучший ответ Сообщение было отмечено kruglov1 как решение

Решение

Вот одно из решений. Может, не самое элегантное, зато работает, как часы.

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
//-----------------------------------------------------------
#include <iostream>
#include <iomanip>
//-----------------------------------------------------------
using std::cout;
using std::endl;
using std::setw;
using std::cin;
//-----------------------------------------------------------
 
 
//===========================================================
 
int main()
{
setlocale(LC_ALL, "rus");
//===========================================================
//Поиск чисел
//===========================================================
    int A, B;
//-----------------------------------------------------------
    const int array_size = 10000;
    long array_prim[array_size] = { 2,3,};
//-----------------------------------------------------------
    long last_num = 3;
    int  index = 2;
//-----------------------------------------------------------
    bool found = true;
//-----------------------------------------------------------
    do                                          //Создаем цикл поиска чисел
    {                                           //Берем следующее нечетное число для проверки
        last_num += 2;
        found = true;
//-----------------------------------------------------------
        for (int i = 0; i < index; i++)         //Проверяем нечетное число на принадлежность к простым
        {
            found = last_num % array_prim[i];   //А именно, делим уже на известные простые
            if(found == false)
                break;
        }
//-----------------------------------------------------------
        if (found == true)                      //Если число ни на что не поделилось, оно простое.
        {
            array_prim[index++] = last_num;
        }
//-----------------------------------------------------------
}
while(index < array_size);
 
 
//===========================================================
//Вывод найденных чисел
//===========================================================
//-----------------------------------------------------------
    for(;;)
    {
        cout << endl
             << "Введите нижний предел A, с которого будут показаны результаты: ";
        cin  >> A;
 
        cout << endl
             << "Введите нижний предел B, до которого будут показаны результаты: ";
        cin  >> B;
//-----------------------------------------------------------
 
        if(A >= 2 && B <= 100000)
        {
            cout <<endl;
            int count = 0;
            cout << endl
                 << "Выборка простых чисел в пределах от " << A << " до " << B << ":"
                 << endl
                 <<endl;
            for(int i = 0; i < array_size; ++i)
            {
                if ((array_prim[i] >= A) && (array_prim[i] <= B))
                {
                    if (count == 6)
                    {
                        count = 0;
                        cout << endl;
                    }
                    cout << setw(7) << array_prim[i];
                    count++;
                }
                else
                {
                    continue;
                }
            }
            if (count == 0)
            {
                cout << endl
                     << "Fol"
                     << endl
                     << endl;
                break;
            }
            else
            {
                cout << endl
                     << endl;
                break;
            }
        }
        else
        {
            cout << endl
                << "Вы ввели неверные пределы (необходимо от 2 до 100000 включительно)"
                << endl
                << endl;
        }
    }
//-----------------------------------------------------------
system("pause");
return 0;
}
//==========================================================
Пример компилируется на MicroSoft Visual C++
Если хотите скомпилировать в Qt, уберите строчку
C++
1
system("pause");
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.09.2015, 00:17
Привет! Вот еще темы с решениями:

простые числа в заданном диапазоне
помогите пожалуйста написать программку...я все уже тут посмотрела, никак не...

Вывести все простые числа в заданном диапазоне, которые являются палиндромами
Напишите программу , которая выводит все простые числа , которые являются...

Решето Эратосфена: найти все простые числа в интервале от A до B включительно
По введённым числам A и B вывести все простые числа в интервале от A до B...

Найти все простые числа, не превышающие число n, используя решето Эратосфена
Дано натуральное число n (n&gt;=2). Найти все простые числа, не превышающие число...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru