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

Программа нахождения простых чисел - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как в векторе объектов пользовательского класса изменить заданное поле у определённого элемента? http://www.cyberforum.ru/cpp-beginners/thread1784901.html
Добрый день. Создан вектор из структры: struct man { char name; int age; man(void) {} man(const char* hName, const int hAge) { strcpy(name, hName); age = hAge;
C++ С концами запутался с operator overloading Всем привет. Тема operator overloading - моё слабое место, очень хочу разобраться. Читаю всякие статейки (могу скинуть ссылки, если нужно) + учебник для чайников, но эта тема слишком обширная: в одних источниках есть примеры о перегрузке при создании экземпляра класса, в других используют примеры с присваиванием, где-то мелькает "const", где-то "friend". Где-то передаётся параметр по ссылке... http://www.cyberforum.ru/cpp-beginners/thread1784882.html
Skype API ошибка (_com_error_) C++
Пытаюсь изучать Skype API: #import "Skype4COM.dll" int main() { CoInitialize(NULL); SKYPE4COMLib::ISkypePtr pSkype(__uuidof(SKYPE4COMLib::Skype));
C++ Определить номер треугольного числа (последовательность A000217)
Напишите на языке C / C++ программу, определяющую номер треугольного числа (последовательность A000217 в «Энциклопедии целочисленных последовательностей»). Вход: одно целое (возможно, со знаком «плюс» и символом «перевод строки» \n) число в диапазоне от 1 до 9'223'372'036'854'775'807. Выход: порядковый номер поданного на вход числа в последовательности треугольных чисел или 0 (ноль), если...
C++ Деление больших чисел (нужно ускорить) http://www.cyberforum.ru/cpp-beginners/thread1784844.html
Ребятки, помогите ускорить. Уж очень медленно. Класс совсем простой(вектор со знаком): static const unsigned long long BASE = 1000000000; static const unsigned int BASE_DIGITS = 9; #define BASE_MINUS_1 (unsigned long long)999999999 struct BigInt {
C++ Посоветуйте книгу для новичков по созданию оконных приложений на C++ в MS Visual Studio 6 Есть 6-я "студия", установленная на Win XP SP3. Есть старые проекты вроде под Win2000 (но работают и в WinXP) и MFC. Хочу их отредактировать под свои нужды. Но никогда не писал под Win. Поэтому не могу разобраться в коде. Посоветуйте хорошую старую добротную книгу на русском языке по написанию оконных приложений на C++ в Microsoft Visual Studio 6.0 для тех, кто "полный ноль" в... подробнее

Показать сообщение отдельно
shilko2013
 Аватар для shilko2013
237 / 214 / 115
Регистрация: 02.04.2016
Сообщений: 812
Завершенные тесты: 1
24.07.2016, 15:40     Программа нахождения простых чисел
Вообще-то есть решето Эратосфена
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
#include <iostream>
#include <iomanip> // содержится прототип манипулятора setw()
using namespace std;
 
int main(int argc, char* argv[])
{
    setlocale(LC_ALL, "rus");
    int n; // правая граница интервала
    cout << "Введите число - N: ";
    cin >> n;
 
    int size_array = n - 2; // так как первое простое число - это 2, то размер массива уменьшаем на 2, так как 0 и 1 не в счёт     
    int *arrayPtr = new int [size_array]; // создаём одномерный динамический массив размером n - 2
 
    for(int counter = 0; counter <= size_array; counter++)
    {
        arrayPtr[counter] = counter + 2; // записываем в массив все числа в интервале [2;n]
    }
    int p = 2; // первое простое число
    int index = 0; // переменная  для прохода по элементам массива
 
    // в цикле while реализовано решето Эратосфена
    while (p < n) // пока значение переменной p меньше введённого n
    {
        // в цикле for отсеиваем составные числа
        for (int counter = p*p - 2; counter <= size_array; counter += p)
        {
            arrayPtr[counter] = -1; // на места составных чисел присваиваем значение -1
        }
 
        // в цикле while изменяем значение переменной p
        while (arrayPtr[index] <= p ) // пока значение из массива чисел меньше либо равно значению переменной p
        {
            index++; // переключаться на следующий элемент массива
        }
        p = arrayPtr[index]; // нужное значение массива найдено, поэтому присваиваем его переменной p
    } // конец алгоритма Эратосфена
 
    // вывод на экран простых чисел
    for(int counter = 0; counter <= n - 2; counter++)
    {
        if (arrayPtr[counter] != -1) // если элемент массива не равен -1
        cout << setw(2) << arrayPtr[counter] << " "; // сделать вывод на экран
    }
 
    cout << endl;
    system("pause");
    return 0;
}
 
Текущее время: 09:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru