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

Найти N первых пар простых чисел, которые отличались бы друг от друга на 2 - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как скоротить, не обьявляя переменную? http://www.cyberforum.ru/cpp-beginners/thread955920.html
Использование оператора безусловного перехода. К стати, я не вижу, как бы я вот написал то же самое биз него, так что зря его так критикуют. В операторе иф ошибка. Я все же хотел как-нибудь выпиндреться и не обьявлять булеву переменную и вводить прямо в скобки ифа. Вот что я надумал // Листинг 7.3. // Сложные условия в конструкциях while Boop: counter++; cout << "Enter a Bool...
C++ cin.getline и cin.ignore Есть кусок кода в котором не могу разобраться. Если cin.ignore() есть, то теряется первый вводимый символ начиная со второго входа в for. Если cin.ignore() убрать, то игнорирует первую строку вовсе и ввод начинается со второй. Хотелось бы разобраться. int k; cout << "Enter the number of rows\t"; cin >> k; for (int i=1; i<=k; i++) { cout << i <<":"<<" "; cin.ignore();... http://www.cyberforum.ru/cpp-beginners/thread955915.html
C++ Решето Ератосфена
Дали код алгоритма Ератосфена для поиска простых чисел, надо в нем разобраться, знать как все работает и т.п. И как я начал разчихлять код, то сразу и стал на побитовых операциях. Понял только bits и все... Кому не сложно, обьясните мне етот код коментарями около строчек в классе bitset, а если не сложно то и весь код, а то времени мало, а лабу надо здать. И немогу понять толком код. Наперед...
Не могу разобраться. Мат логика C++
Задание №1. Написать программу для реализации следующего алгоритма определения является ли данная строка символов пропозициональной формулой или нет: шаг 1. Проверка скобочного итога формулы. шаг 2. Создать образы формул из правил 2 и 3. шаг 3. Начиная с первого образа произвести замену всех их вхождений в строку символов на пропозициональную переменную. шаг 4. Продолжать шаг 3, пока не будет...
C++ Написать функцию Procent http://www.cyberforum.ru/cpp-beginners/thread955866.html
Написать функцию Procent, которая возвращает процент от полученного в качестве аргумента числа. Очень прошу помочь, завтра последний день сдачи практики, а я никак не могу успеть. Ибо я буду писать этот код часов 5 т.к. плохо разбираюсь в С++. Заранее благодарен. P.S. написать надо в Вижуал с++
C++ Не понимаю код Помогите пожалуйста разобратся в коде Код который с помощью алгоритма "Решето Эратосфена" подсчитывает все простые числа в диапазоне от 2 до 2 000 000 и подсчитывает время выполнения для заданного диапазона. Код не мой, помогите пожалуйста разобраться #include <iostream> #include <ctime> using namespace std; template<int N> class bitset { подробнее

Показать сообщение отдельно
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
17.09.2013, 02:59
Немного теории (бесполезной, к сожалению).
Вот вариант оптимальнее:
Решето Эратосфена
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
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
 
// This function return vector of primes unsigned integer
vector<unsigned> getPrimes ( unsigned from, unsigned to ) { // both inclusive
    vector<unsigned> primes; // declaration of result vector
    bool *isprime = new bool[ to+1 ]; // creating sieve of Eratosthenes
    memset ( isprime, 0xFF, to ); // setting all marks as true so every number now is prime
    unsigned n = 2; // start from 2 becouse 1 obviously prime (or not prime - it's not a actual question here)
    for ( ; n*n <= to; n++ ) { // cycle throught all integers (lesser or equal than 'to')
        if ( isprime[ n ] ) { // if 'n' actualy is prime
            for ( unsigned i = n*n; i <= to; i += n ) { // than cycle throght all divisible by 'n' greater than square of 'n'
                isprime[ i ] = false; // and mark them as non-prime
            }
 
            if ( n > from ) { // also, if one included by range
                primes.push_back ( n ); // push it back into vector
            }
        }
    } // end of sieve
 
    n = std::max ( n, from ); // and, after sieve
    for ( ; n <= to; n++ ) {  // we go to the end of our range
        if ( isprime[ n ] ) { // in order to catch all remaining primes
            primes.push_back ( n ); // and push it back into vector
        }
    }
 
    return primes; // as final - return vector of primes
}
 
int main () {
    int diff = 2;
    auto primes = getPrimes ( 1, 997 );
    for ( unsigned i = 0; i < 997; i++ ) {
        if ( primes[ i + 1 ] - primes[ i ] == 2 ) {
            std::cout << primes[ i ] << " and " << primes[ i + 1 ] << std::endl;
        }
    }
 
    return 0;
}


И пожалуйста, пиши код с правильным форматированием (если мы в visual studio, то перед отправкой нажимай [ctrl + k, f] хотя бы). Неправильного у тебя много.
Построчно:
16 - почему до 100?.. Что за бред?
19 - почему до половины числа, если до квадратного корня? Кто этому научил?
29 - аналогично
На остальные ошибки мои глаза устали. Прошу извинить.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru