Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1 / 1 / 1
Регистрация: 23.08.2012
Сообщений: 100
1

Алгоритм "Решето Эратосфена"

14.12.2012, 17:34. Показов 2188. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот наконец-то получилось реализовать это алгоритм. Укажите, пожалуйста, как можно написать красивее и рациональней?
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
vector<int> all;//Здесь храняться все числа от 0 до n
    int n= 0; //верхний предел
    int p = 2; //первое простое число
    cin>>n;
 
    for(int i = 0; i<=n; ++i){//Заполнение вектора all
        all.push_back(i);
    }
 
    while(p*p<n){
 
        for(int i = p; i<=n - p; i +=p ){//Заполнение нулями чисел кратных p
            all[i + p] = 0;//Чтобы не заполнять число равное all[i]
        }
    
        int k = p;//НУжно сохранить значение р, т.к дальше в цикле оно изменяется, а нужно использовать имено это значение
 
        for(int i = n; i>=k+1; --i){//Проходим весь вектор и если all[i] не равно 0, то присваеваем р его значение.
            //К+1 используем для того, чтобы не записать в р уже использованое значение
            //т.е чтобы алгоритм опять не просчитывался при р=2; 
 
            if(all[i]!=0){
                p =all[i];
            }
        }
    }
 
    for(int i = 2; i<=n; ++i){//Опять проходим весь вектор и выводим все all[i] не равные 0
        if(all[i]!=0){
            cout<<all[i]<<endl;
        }
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.12.2012, 17:34
Ответы с готовыми решениями:

Алгоритм решето Эратосфена реализация через битовый массив
Найти все простые числа не превосходящие 1000. Использовать алгоритм решето Эратосфена и битовый...

Алгоритм "Решето Эратосфена"
тыкните в чем проблема пожалуйста... void Eratosfen(int N) { int size_array = N - 2; int...

Решето Эратосфена
Скажите, пожалуйста, является ли этот код Решетом Эратосфена? #include &lt;iostream&gt; #include...

Решето Эратосфена
Как можно реализовать? Подскажите плиз

2
CEO SOVAZ Corp.
386 / 232 / 51
Регистрация: 17.12.2011
Сообщений: 822
Записей в блоге: 1
14.12.2012, 17:37 2
Использовать iterator
0
1 / 1 / 1
Регистрация: 23.08.2012
Сообщений: 100
14.12.2012, 17:38  [ТС] 3
Цитата Сообщение от sovaz1997 Посмотреть сообщение
Использовать iterator
А что такое iterator, я пока не знаю
0
14.12.2012, 17:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2012, 17:38
Помогаю со студенческими работами здесь

Решето Эратосфена
В решете эратосфена из книги в условии есть непонятная вещь: if (i * 1ll * i &lt;= n) - возле единицы...

Решето Эратосфена
Кому надо - программа &quot;Решето Эратосфена&quot; на C++. Записывает в файл 1 000 000 первых простых чисел...

Решето Эратосфена
Определить простые числа методом просеивания с помощью &lt;&lt;решета Эратосфена&gt;&gt; с _битовой упаковкой_...

Решето Эратосфена
Простое число — это любое целое число, которое точно делится без остатка только само на себя и на...

Решето Эратосфена
Хочу сделать программу по алгоритму решета Эратосфена Из диапазона Ниже попробовал что то, но...

Решето Эратосфена
Написать функция для выполнения алгоритма решить Эратосфена! зарания спасибо!!!

Решето Эратосфена
Возможно ли найти простые числа методом решета Эратосфена с помощью вектора за один проход? ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru