Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Liori
4 / 4 / 5
Регистрация: 30.08.2012
Сообщений: 155
#1

Найти в массиве простые числа и добавить в новый массив - C++

24.02.2015, 21:42. Просмотров 595. Ответов 4
Метки нет (Все метки)

Помогите, не работает код
Пользователь вводит элементы массива, нужно узнать, есть ли простные числа среди них, если есть - добавить в другой массив (простых чисел), отсортировать и вывести. Не работает именно фрагмент с поиском простых чисел и добавлением в новый массив

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
void IsPrime(vector<int> &massive,vector<int> &prime, int N, int p)
{
    
    for (int i=0;i<N;i++)
    {
    for (int k=2; k<=massive[i]; k++)
    {
        if (massive[i]%k==0)
        {
            prime.push_back(i);
        }
    }
    }
 
    int swapC = 1;
    while (swapC)
    {
        swapC = 0;
        for (int i = 0; i < p-1; ++i)
        {
            if (prime[i] > prime[i + 1])
            {
                swap(prime[i], prime[i + 1]);
                swapC++;
            }
        }
    }
 
    cout << "\n\nПростые числа, отсортированные по возрастанию: ";
    for (int i = 0; i < p; ++i)
    {
        cout << prime[i] << " ";
    }
    cout << "\n";
 
}

http://www.cyberforum.ru/cpp-beginners/thread1542516.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2015, 21:42
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти в массиве простые числа и добавить в новый массив (C++):

Найти в массиве простые числа и заменить нулями
требуется задать массив целых чисел, и удалить(ну или как я для себя упростила...

Найти все простые числа в массиве и упорядочить их по возрастанию
Найти все простые числа в массиве и упорядочить их по возрастанию

В одномерном целочисленном массиве найти простые числа и вывести их номера.
1. В одномерном целочисленном массиве найти простые числа и вывести их номера....

Найти все трехзначные простые числа. Определить функцию позволяющую распознавать простые числа
Найти все трехзначные простые числа. Определить функцию позволяющую...

Добавить в массив заданное число, если этого числа нет в массиве
Нужно 2 програмки: 1) добавляет в массив заданное* число, если этого числа нет...

4
Extrim88
50 / 50 / 21
Регистрация: 08.02.2013
Сообщений: 189
24.02.2015, 22:03 #2
Цитата Сообщение от Liori Посмотреть сообщение
Не работает именно фрагмент с поиском простых чисел и добавлением в новый массив
Так ты эти простые числа неправильно выбираешь.
Цитата Сообщение от Liori Посмотреть сообщение
for (int i=0;i<N;i++)
* * {
* * for (int k=2; k<=massive[i]; k++)
* * {
* * * * if (massive[i]%k==0)
* * * * {
* * * * * * prime.push_back(i);
* * * * }
* * }
* * }
Данный цикл, тебе выберет все числа, как простые, так и нет

Добавлено через 6 минут
Плюс еще алгоритм поиска простых чисел неэффективный. При малых N может еще и выручит. Но задай размерность вектора N = 1000000, например, и сам увидишь эффект.
0
Liori
4 / 4 / 5
Регистрация: 30.08.2012
Сообщений: 155
24.02.2015, 22:07  [ТС] #3
Extrim88, а как нужно поменять этот код? Я заменила на if (massive[i]%k!=0), но результат тот же, ничего не выводит
0
Extrim88
50 / 50 / 21
Регистрация: 08.02.2013
Сообщений: 189
24.02.2015, 22:17 #4
C++
1
2
3
4
5
6
7
8
9
10
int simple (int a){
    if (a <= 1)
        return false;
    for(int i = 2; i*i <= a; i++) {
        if (a % i == 0) {
            return false;
        }
    }
    return true;
}
Вот, например, функция, которая проверяет, является ли число a простым. Можешь алгоритм приспособить для своего кода.
0
Liori
4 / 4 / 5
Регистрация: 30.08.2012
Сообщений: 155
24.02.2015, 22:28  [ТС] #5
Extrim88, я изменила тот фрагмент, но всё равно ничего не изменилось
C++
1
2
3
4
5
6
7
8
9
10
for (int i = 0; i<N; i++)
    {
        if (massive[i] <= 1) break;
        for (int k = 2; k*k <= massive[i]; k++)
        {
            if (massive[i] % k == 0) break;
 
            prime.push_back(i);
        }
    }
0
24.02.2015, 22:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.02.2015, 22:28
Привет! Вот еще темы с решениями:

Как передвигать указатель чтобы выделить память под новый элемент и добавить новый элемент в массив?
Допустим есть некое условие,нам нужно при каждом его выполнении выделить память...

Выделить простые числа в массиве
Добрый вечер, форумчане. Я написал программу, которая выделяет простые числа в...

Отсортировать только простые числа в массиве
Я написала код поиска простых чисел, их сортировки. Но мне нужно чтобы...

Одномерный массив. Вывести на экран все числа, индексы которых есть простые числа.
Нужно вывести на экран все числа заданной последовательности, индексы которых...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru