Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.69
=Gluk=
2 / 2 / 1
Регистрация: 18.12.2009
Сообщений: 6
#1

Нахождение простых чисел "решетом" Эратосфена - C++

25.12.2009, 23:53. Просмотров 3152. Ответов 6
Метки нет (Все метки)

Здравствуйте!
Вроде так почитал - на вид несложный метод, но как-то туплю. Помогите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2009, 23:53     Нахождение простых чисел "решетом" Эратосфена
Посмотрите здесь:

Объяснить работу программы (нахождение простых чисел, решето Эратосфена) - C++
Поясните как работает эта прога а именно : #include <iostream> #include <conio.h> using namespace std; int main() { ...

Поиск чисел, "простых для заданного набора" - C++
Условие задачи: Дан набор различных натуральных чисел. Будем называть число "простым для заданного набора", если число не делится ни на...

Найти количество "зеркально простых" чисел на промежутке от a до b - C++
Здравствуйте, уважаемые программисты! Вот несложная задачка на простые числа. Но в одном из тестов - неправильный ответ. Что это может...

Международная олимпиада по программированию 1994г. Задач "Матрица простых чисел". - C++
Всем привет:) Решаю олимпиадные задачки прошлых годов и никак не получается решить эту. Задача: напишите написать программу , которая...

Разработать класс "Cmp", обеспечивающий нахождение НОД и НОК двух чисел - C++
Кто может помогите пожалуйста. Не могу разобраться в классах Перепишите задачу в сообщение

Написать программу с использованием алгоритма "Решето Эратосфена" - C++
Написание программу с использованием алгоритма "Решето Эратосфена ".", Которая подсчитывает все простые числа в диапазоне от 2 до 2000000...

Прокомментируйте оставшиеся строчки, не понимаю как работает "Решето Эратосфена" - C++
#include <iostream> //подключение стандартной библиотеки ввода-вывода using namespace std; //пространство имён. Чтобы писать "cout <<...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,365
25.12.2009, 23:55     Нахождение простых чисел "решетом" Эратосфена #2
В чем именно тупишь? Что именно не получается?
=Gluk=
2 / 2 / 1
Регистрация: 18.12.2009
Сообщений: 6
26.12.2009, 00:01  [ТС]     Нахождение простых чисел "решетом" Эратосфена #3
ну туплю это в плане что вики все разжевала, но невнятно как это делать (уж совсем тока С начал изучать)
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
26.12.2009, 12:05     Нахождение простых чисел "решетом" Эратосфена #4
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
//Решето Эратосфена реализация
#include<iostream>
using namespace std;
 
int main()
{
        int nSize;
        cout << "Limit = ";
        cin >> nSize;
    nSize++;
        bool* bArray = new bool [nSize];
 
        memset(bArray, 1, nSize);
 
        for(int i = 2; i < nSize; ++i)
                if(bArray[i])
                for(int j = i*i; j < nSize; j += i)
                        bArray[j] = false;
        cout << "All primes numbers from 0 to " << (nSize - 1) << ":" << endl;
        for(int i = 2; i < nSize; ++i)
                if(bArray[i])
                printf("%d ", i);
 
        cout << endl;
 
        return 0;
}
TimeTwo
68 / 68 / 31
Регистрация: 29.11.2009
Сообщений: 321
29.12.2009, 19:14     Нахождение простых чисел "решетом" Эратосфена #5
а как на С это написать?
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
30.12.2009, 05:51     Нахождение простых чисел "решетом" Эратосфена #6
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
//Решето Эратосфена реализация
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "conio.h"
 
int main()
{
    int nSize;
    printf("Limit = ");
    scanf("%d",&nSize);
    nSize++;
    int *bArray=(int *)calloc(nSize, sizeof(int));    
 
    memset(bArray, 1, nSize*sizeof(int));
 
    for(int i = 2; i < nSize; ++i)
        if(bArray[i])
            for(int j = i*i; j < nSize; j += i)
                bArray[j] = 0;
    printf("All primes numbers from 0 to %d: \n", nSize - 1);
    for(int i = 2; i < nSize; ++i)
        if(bArray[i])
            printf("%d ", i);
 
 getch();
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2010, 22:55     Нахождение простых чисел "решетом" Эратосфена
Еще ссылки по теме:

Определить количество простых чисел, меньших N, используя решето Эратосфена - C++
Дан код: #include &lt;iostream&gt; using namespace std; static const int N = 1000; int main() { int i, a; for (i = 2; i &lt; N; i++)...

Используя метод "Решето Эратосфена" - C++
Помогите пожалуйста Используя метод &quot;Решето Эратосфена&quot;, по заданному натуральному 7V&gt;1 найти все простые числа, меньшие...

Реализовать генератор простых чисел с использованием решета Эратосфена и перебора делителей - C++
В этой задаче мы реализуем генератор простых чисел. Простыми называются положительные целые, не имеющие делителей кроме 1 и самого числа....

Алгоритм "Решето Эратосфена" - C++
Вот наконец-то получилось реализовать это алгоритм. Укажите, пожалуйста, как можно написать красивее и рациональней? vector&lt;int&gt;...

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


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

Или воспользуйтесь поиском по форуму:
=Gluk=
2 / 2 / 1
Регистрация: 18.12.2009
Сообщений: 6
04.01.2010, 22:55  [ТС]     Нахождение простых чисел "решетом" Эратосфена #7
Всем спасибо за ответы.

Тут кое-что подшаманил. Выложу свой вариант итоговый)) - может поможет будущим поколениям

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
#include <stdio.h>
void main(){
int i, s, j;
int N;
unsigned int *a;
printf("? :");
scanf("%d",&N);
a = (unsigned int *) malloc(N*sizeof(int)); //sizeof(int) - сколько нужно выделить памяти под массив из N чисел
 for(i=0; i<N; i++){
 a[i] = i;
 }
 a[1]=0;
 for(s=2; s<N; s++){
 if(a[s]!=0){
 for(j=s*2; j<N; j+=s){
 a[j]=0;
 }
 }
 }
 for(i=0; i<N; i++){
 if(a[i]!=0){
 printf("%d\n", a[i]);
 }
}
getch();
free(a);
}
Yandex
Объявления
04.01.2010, 22:55     Нахождение простых чисел "решетом" Эратосфена
Ответ Создать тему
Опции темы

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