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

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

24.02.2015, 21:42. Просмотров 638. Ответов 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";
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2015, 21:42
Ответы с готовыми решениями:

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

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

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

В одномерном целочисленном массиве найти простые числа и вывести их номера.
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

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

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

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


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

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

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