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

Число простых чисел от 1 до N методом решета Сундарама - C++

Восстановить пароль Регистрация
 
RampKiller
4 / 4 / 0
Регистрация: 09.03.2011
Сообщений: 52
09.06.2012, 11:54     Число простых чисел от 1 до N методом решета Сундарама #1
Не врубаюсь как сделать.

Проект С++, использующий динамическую библиотеку MSVCRT.dll вместо обычной MSVCRT90.dll (http://habrahabr.ru/post/87016/). Консольное приложение, считающее число простых чисел от 1 до N методом решета Сундарама (http://ru.wikipedia.org/wiki/Решето_Сундарама).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2012, 11:54     Число простых чисел от 1 до N методом решета Сундарама
Посмотрите здесь:

C++ вычислить k-тое число последовательности целых простых чисел
Найти простые числа пользуясь методом решета Эратосфена НЕ используя массивы C++
54. Сформировать массив простых чисел, не превышающих заданное натуральное число N C++
C++ c++ дано число n вычислить сколько простых чисел от 2 до n
Задано целое число N. Найдите сумму простых чисел до N C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RampKiller
4 / 4 / 0
Регистрация: 09.03.2011
Сообщений: 52
12.06.2012, 10:25  [ТС]     Число простых чисел от 1 до N методом решета Сундарама #2
Помогите, времени мало.
Vandris
 Аватар для Vandris
63 / 63 / 13
Регистрация: 19.01.2011
Сообщений: 90
12.06.2012, 11:21     Число простых чисел от 1 до N методом решета Сундарама #3
Проект уж как нибудь сами создадите, ок?
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
#include <iostream>
#include <fstream>
#include <cmath>
 
#define N 500000000
 
int main()
{
    std::ofstream file("primes.txt");
    int sqr = (sqrt(2*N+1) - 1)/2;
    std::vector<bool> number(N, true);
    int count = 0;
 
    for (int i = 1; i <= sqr; i++)
        for (int j = i; j <= (N-i)/(2*i + 1); j++)
            number[i+j+2*i*j] = false;
 
    std::cout << "Counting is end. Writing in file...\n";
 
    for (int i = 0; i < N; i++)
        if (number[i])
        {
            count++;
            if (count % 10 == 0)
                file << "\n";
            file << i*2 + 1 << " ";
        }
    std::cout << "\nPrime numbers from 1 to " << 2*N+1 << " = " << count;
    return 0;
}
код считает кол-во простых чисел от 1 до 2N+1 (т.е. от 1 до 1 000 000 001 в данном случае) и пишет эти простые числа в файл (советую уменьшить N, а то файл будет на 500 Мб, сложно будет открыть).
RampKiller
4 / 4 / 0
Регистрация: 09.03.2011
Сообщений: 52
12.06.2012, 12:17  [ТС]     Число простых чисел от 1 до N методом решета Сундарама #4
Цитата Сообщение от Vandris Посмотреть сообщение
Проект уж как нибудь сами создадите, ок?
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
#include <iostream>
#include <fstream>
#include <cmath>
 
#define N 500000000
 
int main()
{
    std::ofstream file("primes.txt");
    int sqr = (sqrt(2*N+1) - 1)/2;
    std::vector<bool> number(N, true);
    int count = 0;
 
    for (int i = 1; i <= sqr; i++)
        for (int j = i; j <= (N-i)/(2*i + 1); j++)
            number[i+j+2*i*j] = false;
 
    std::cout << "Counting is end. Writing in file...\n";
 
    for (int i = 0; i < N; i++)
        if (number[i])
        {
            count++;
            if (count % 10 == 0)
                file << "\n";
            file << i*2 + 1 << " ";
        }
    std::cout << "\nPrime numbers from 1 to " << 2*N+1 << " = " << count;
    return 0;
}
код считает кол-во простых чисел от 1 до 2N+1 (т.е. от 1 до 1 000 000 001 в данном случае) и пишет эти простые числа в файл (советую уменьшить N, а то файл будет на 500 Мб, сложно будет открыть).
Спасибо, а где предусматривается "Проект С++, использующий динамическую библиотеку MSVCRT.dll вместо обычной MSVCRT90.dll"?
Vandris
 Аватар для Vandris
63 / 63 / 13
Регистрация: 19.01.2011
Сообщений: 90
12.06.2012, 13:01     Число простых чисел от 1 до N методом решета Сундарама #5
Это надо копаться где то в студии самой, я в ней не работаю, не знаю
RampKiller
4 / 4 / 0
Регистрация: 09.03.2011
Сообщений: 52
13.06.2012, 20:05  [ТС]     Число простых чисел от 1 до N методом решета Сундарама #6
Народ, помогите сделать именно по заданию, срочняк.

Добавлено через 21 час 37 минут
Вверх!
Yandex
Объявления
13.06.2012, 20:05     Число простых чисел от 1 до N методом решета Сундарама
Ответ Создать тему
Опции темы

Текущее время: 05:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru