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

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

Восстановить пароль Регистрация
 
nadyawh
Сообщений: n/a
16.09.2013, 22:03     Найти N первых пар простых чисел, которые отличались бы друг от друга на 2 #1
Не могу понять, почему не делается проверка числа на простоту.

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
#include "StdAfx.h"
#include <iostream>
#include <cmath>
using namespace std;
 
 
int main()
{
    int i, k, N;
    bool pr=true, pri=true;
     int s=0;
     cout << "vvedite kolichestvo par";
     cin >> N;
     while (s<=N)
     {
    for (i=2; i<=100; i++)
 
    {
        for (int l=2; l<=l/2; l++)
 
        {
            pr=true;
            if(i%l==0) pr=false;
        }
        if (pr==true)
           {
            int k=i+2;
            
                for (int l=2; l<k/2; l++)
              {
                pri=true;
                if(k%l==0) pri=false;
              }
        if (pri == true) 
            {
                s=s+1;
                cout << "(" << i << "," << k << ") ";
            }
        }
    }
 
     }
    
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2013, 22:03     Найти N первых пар простых чисел, которые отличались бы друг от друга на 2
Посмотрите здесь:

C++ Найти 100 первых простых чисел.
C++ Найти 100 первых простых чисел
Как скомпилировать два класса, которые используют методы друг друга C++
Найти первых 100 простых чисел C++
Расставить 8 ферзей на шахматной доске 8 на 8, которые не бьют друг друга C++
C++ Найти 100 первых простых чисел
C++ пары целых чисел, делящиеся друг на друга
Найти сто первых простых чисел C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
17.09.2013, 02:59     Найти N первых пар простых чисел, которые отличались бы друг от друга на 2 #2
Немного теории (бесполезной, к сожалению).
Вот вариант оптимальнее:
Решето Эратосфена
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 - аналогично
На остальные ошибки мои глаза устали. Прошу извинить.
Yandex
Объявления
17.09.2013, 02:59     Найти N первых пар простых чисел, которые отличались бы друг от друга на 2
Ответ Создать тему
Опции темы

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