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

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

Войти
Регистрация
Восстановить пароль
 
Bardo
1 / 1 / 0
Регистрация: 06.10.2014
Сообщений: 22
#1

Простые числа. Решето Эратосфена - C++

17.11.2014, 19:05. Просмотров 381. Ответов 5
Метки нет (Все метки)

Здравствуйте!
Нужна ваша помощь, не могу понять условие этой задачи:
Даны натуральное число n, целые числа a1,.....,an. Рассмотреть отрезки последовтельности a1, ....., an ( подпоследовательности идущих подряд членов), состоящие из простых чисел. В каждом случае получить наибольшую из длин рассматриваемых отрезков.

Написать нужно через функции. Тоесть сам алгоритм нахождения простых чисел я запишу в отдельной функции. А что за отрезки последовательности и как их получить не понимаю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2014, 19:05     Простые числа. Решето Эратосфена
Посмотрите здесь:

C++ Найти все простые числа, не превышающие число n, используя решето Эратосфена
Решето Эратосфена C++
Решето Эратосфена C++
Решето Эратосфена C++
Решето Эратосфена C++
C++ Решето Эратосфена
C++ Решето Эратосфена
Решето Эратосфена C++
C++ Решето Эратосфена
C++ Решето Эратосфена. По номеру простого числа найти это число
C++ Найти простые числа в заданном диапазоне с помощью решета Эратосфена
Решето Эратосфена: найти все простые числа в интервале от A до B включительно C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OnePiece
33 / 33 / 22
Регистрация: 22.02.2014
Сообщений: 107
17.11.2014, 19:16     Простые числа. Решето Эратосфена #2
Ты идёшь по массиву и встречаешь первое простое число.
Сохраняешь позицию где ты его встретил.
Идёшь дальше, пока не встретишь не простое число.
Это и есть твой отрезок простых чисел.
Считаешь длину отрезка, сохраняешь ее и идёшь дальше.
Bardo
1 / 1 / 0
Регистрация: 06.10.2014
Сообщений: 22
17.11.2014, 19:25  [ТС]     Простые числа. Решето Эратосфена #3
Сохраняешь позицию где ты его встретил.
Идёшь дальше, пока не встретишь не простое число.
Вот мне и интересно как это сделать в студии.
На данный момент что у меня есть, это функция которая находит в массиве простые числа,все.
OnePiece
33 / 33 / 22
Регистрация: 22.02.2014
Сообщений: 107
17.11.2014, 19:27     Простые числа. Решето Эратосфена #4
Что возвращает функция после нахождения?
Просто можно переписать функцию, добавив туда то, что я написал раннее.
Bardo
1 / 1 / 0
Регистрация: 06.10.2014
Сообщений: 22
17.11.2014, 19:35  [ТС]     Простые числа. Решето Эратосфена #5
Вот код функции:
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 "math.h"
 
using namespace std;
 
int Prost(int argc, char* argv[])
{
    int *Rg;
    int i,j,n;
 
    cout << "Enter n: ";
    cin >> n;
 
    Rg=new int[n];
 
    for (i=0; i<n; i++) Rg[i]=i;
 
    for (j=2; j <= sqrt(n); j++)
        for (i=1; i<n; i++)
            if (((i % j) == 0) && (i != j)) Rg[i]=0;
 
    cout << "Primary numbers in range [1," << n <<"] are:" << endl;
 
    for (i=1; i < n; i++) 
        if (Rg[i] > 0) cout << Rg[i] << endl;
 
    delete [] Rg;
 
    return 0;
}
Простые числа с массива.
OnePiece
33 / 33 / 22
Регистрация: 22.02.2014
Сообщений: 107
17.11.2014, 20:15     Простые числа. Решето Эратосфена #6
Как то так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int flag = 1;
dlinna = 0;
for (i=0; i<n; i++)
{
    if (Rg[i]!=0 && flag )
    {
        nachalo=i; 
        flag = 0;
    }
    if (Rg[i]==0 && !flag)
    {
        flag=1;
        if (dlinna< i-nachalo)
            dlinna = i - nachalo;
    }
        
}
Yandex
Объявления
17.11.2014, 20:15     Простые числа. Решето Эратосфена
Ответ Создать тему
Опции темы

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