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

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

Войти
Регистрация
Восстановить пароль
 
mr penis
0 / 0 / 0
Регистрация: 21.10.2015
Сообщений: 23
#1

Вывести все элементы массива, являющиеся простыми числами - C++

24.03.2016, 20:32. Просмотров 436. Ответов 8
Метки нет (Все метки)

Добрый вечер,форумчане. Не могу разобраться с учебной задачей.
Задача: Дан одномерный массив. Разработать функцию, выводящую на
экран все элементы массива, являющиеся простыми числами. Определить
число таких элементов.

Понял как проходить по массиву, вроде понял логику но количество элементов считает неправильно. Где ошибся? Подправьте логику. Спасибо .
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
nt main()
{
    int j,p,k,i,a[10]={0,};
    int b[10]={0,};
    cout <<"vvedite massiv"<<endl;
    for(i=0;i<10;i++)
    {
 
        cout<<"vvedite"<<i+1<<"element";
        cin >> a[i];
    }
        for(i=0;i<10;i++)
        cout << a[i]<<endl;
 
        p=0;
        for(i=0;i<10;i++){
            for(k=2;k<a[i];k++){
            if (a[i]%k==0)
 
                b[i]=a[i];
 
                p=p+1;
                break;}
 
        }
                cout<<p<<endl;
 
            for(i=0;i<10;i++){
                cout<<b[i];
 
            }
   // return 0;
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2016, 20:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести все элементы массива, являющиеся простыми числами (C++):

Удалить из массива целых чисел все элементы, являющиеся простыми числами - C++
Помогите пожалуйста написать программу на С++ с условием : Удалить из массива целых чисел все элементы, являющиеся простыми числами. ...

Удалить из массива целых чисел все элементы, являющиеся простыми числами - C++
Проверьте пожалуйста правильность написания программы и её работы по условию : Удалить из массива целых чисел все элементы, являющиеся...

Удалить из массива целых чисел все элементы, являющиеся простыми числами - C++
Помогите пожалуйста написать программу по условию : Удалить из массива целых чисел все элементы, являющиеся простыми числами. Заранее...

Удалить из массива целых чисел все элементы, являющиеся простыми числами - C++
Люди, для кого не составит большого труда, напишите пожалуйста программу по поставленной задаче : Удалить из массива целых чисел все...

Массив: Удалить из массива целых чисел все двузначные элементы,являющиеся простыми числами - C++
Удалить из массива целых чисел все двузначные элементы,являющиеся простыми числами .Найти среднее арифметическое элементов массива до и...

Удалить из массива целых чисел все элементы, являющиеся совершенными числами. - C++
Удалить из массива целых чисел все элементы, являющиеся совершенными числа ми. #include &lt;iostream&gt; #include &lt;iomanip&gt; #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Черный мечник
48 / 49 / 17
Регистрация: 29.12.2012
Сообщений: 425
24.03.2016, 22:44 #2
А где тут функция?(кроме мейна)
судя по заданию тебе надо еше свою функцию создавать
основная ошибка из-за непонятного почерка
C++
1
2
3
4
5
6
if (a[i]%k==0)
              b[i]=a[i];//только эта строчка относится к ифу
 
                p=p+1;//эта строчка не относится к ифу и она всегда +1 добовляет
                break;//это выход из внутренего цикла, и он срабатывает при первой же итерации ,из-за 
                 // ваша задумка делить на все числа меньше текушего неработает..
Добавлено через 2 минуты
и надеюсь вы читали википедию: просто́е число́ — натуральное (целое положительное) число, имеющее ровно два различных натуральных делителя[1] — единицу и самого себя.
C++
1
if((a[i]%a[i]==0)&&((a[i]/1)==a[i]))
0
mr penis
0 / 0 / 0
Регистрация: 21.10.2015
Сообщений: 23
25.03.2016, 10:09  [ТС] #3
if((a[i]%a[i]==0)&&((a[i]/1)==a[i])) я правильно понял это условие простого числа, но как же проверить делится ли число на другие числа??
0
skipaq
69 / 69 / 30
Регистрация: 24.01.2013
Сообщений: 197
25.03.2016, 11:16 #4
Черный мечник, ваш if не несёт в себе никакого смысла, число деленное на себя всегда даст 0 в остатке. Чтоб проверить надо что-то типа вложенного цикла
C++
1
for  (int j=1; j <=a[i]; j++)
, и внутри уже вложить
C++
1
if (a[i]%j==0)
Прошу прощения, с телефона..нет возможности написать полностью. Но суть подал
0
mr penis
0 / 0 / 0
Регистрация: 21.10.2015
Сообщений: 23
25.03.2016, 11:35  [ТС] #5
но так ведь у меня такой же цикл. Не понял Вашу мысль. Мой цикл от 2 до числа меньше A[I] .
0
skipaq
69 / 69 / 30
Регистрация: 24.01.2013
Сообщений: 197
25.03.2016, 11:47 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Точняк. А вообще гляньте тут, Вложенные циклы: вывести n первых простых чисел
Когда-то писал...
В вашем случае будет что-то типа
C++
1
2
3
4
5
6
for (int k= 1; k <= a[i];k++){
        for (int j = 2; j <= k/2; j++){
            if (k%j == 0) break;
        }
        if (j > k/2) cout << i << " ";
    }
1
mr penis
0 / 0 / 0
Регистрация: 21.10.2015
Сообщений: 23
25.03.2016, 14:58  [ТС] #7
Спасибо вроде разобрался вот только количество простых иногда считает неправильно
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
int main()
{
    int kol,p,k,i,a[10]={0,};
    int b[10]={0,};
    cout <<"vvedite massiv"<<endl;
    for(i=0;i<10;i++)
    {
 
        cout<<"vvedite"<<i+1<<"element";
        cin >> a[i];
    }
        kol=0;
        for(i=0;i<10;i++)
        cout << a[i]<<endl;
        for(i=0;i<10;i++)
        {
            p=0;
            for(k=2;k<a[i];k++)
            { if(a[i]%k==0)
            p=p+1;
            }
            if(p==0){
                cout<<a[i];
               kol=kol+1;
               }
 
            }
            cout<<"kol-vo prostyx 4isel"<<kol;
 
   // return 0;
}

а да вопрос как правильно поступить с отрицательными элементами?
0
ZaMaZaN4iK
Мой лучший друг-отладчик!
164 / 164 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
25.03.2016, 16:18 #8
skipaq, при поиске простых чисел нужно бежать до корня числа. К тому же есть тесты на простоту(Миллера-Рабина, Полларда, BPSW и многие другие. Но они вероятностные все). Можно прикрутить решёта(Эратосфена и Аткина)
0
skipaq
69 / 69 / 30
Регистрация: 24.01.2013
Сообщений: 197
25.03.2016, 16:46 #9
ZaMaZaN4iK, спасибо) хотелось просто пример привести... Натолкнуть) а вообще наиболее правильный вариант такой , вернее, один из
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2016, 16:46
Привет! Вот еще темы с ответами:

Удалить из массива целых чисел все элементы, являющиеся совершенными числами. - C++
нужно сделать сдвиг элементов массива а не затирание этих совершенных чисел пробелом,короче не знаю как помогите пожалуйста очень нужно

Продублировать элементы массива, являющиеся числами Фибоначчи - C++
Задание : Продублировать элементы, являющиеся числами Фибоначчи;

Определить номера строк матрицы, все элементы которых являются простыми числами - C++
Дано: прямоугольная матрица A. Определить номера строк все элементы которых являются простыми числами. Проверку каждой строки на...

Используя функции сформировать одномерный массив и отсортировать по возрастанию только те элементы массива, которые являются простыми числами - C++
Помогите закончить две задачи. 1. Используя функции сформировать одномерный массив и отсортировать по возрастанию только те элементы...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.03.2016, 16:46
Ответ Создать тему
Опции темы

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