Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/55: Рейтинг темы: голосов - 55, средняя оценка - 4.55
4 / 4 / 0
Регистрация: 20.10.2012
Сообщений: 21
1

Вывести простые числа из массива

21.02.2013, 22:03. Показов 10378. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вообщем не пойму, почему не работает.
Для определения простое ли число использовал эту программу

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main ()
{
int n;
cin>>n;
int i;
for (i = 2; i<sqrt(n); i++) {
    if (n % i == 0) {
        cout<<"ne prost";
        return 0;
    }
}
cout<<"prost";
return 0;}

И всунуть эту проверку для массива не смог, проверяет только первый элемент массива

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
#include <iostream>
#include<time.h>
#include <windows.h>
using namespace std;
 
int main()
{
    srand(time(NULL));
    setlocale (LC_ALL, "Russian");
  int r,i;
  cout<< "razmer\t";
  cin>>r;
  int *mas1=new int[r];
  for (i = 0; i < r; i++) 
  {
  mas1[i] = rand()%30; 
  }
   cout<<"массив"<<endl;
  for (i = 0; i < r; i++)
  {
  cout<<mas1[i]<<" "; 
  }
  cout<<endl;
 
 
 int j;
  for (i = 0; i < r; i++){
   for (j = 2; j<sqrt(mas1[i]); j++)
    if (mas1[i] % j == 0) return 0;
    else
   cout<<mas1[i]<<" "; return 0;}
 
  delete [] mas1;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.02.2013, 22:03
Ответы с готовыми решениями:

Вывести простые числа из массива
Всем привет, нужна помощь! Никак не могу написать код Задан массив, есть ли среди элементов...

Вывести простые числа одномерного массива
Помогите, нужно вывести на экран простые числа одномерного массива. При вызове функции поиска...

Вывести на экран только простые числа из массива
Написать программу, которая выводит на экран только простые числа. Массив и его длина вводятся...

Вывести все простые числа из заданного пользователем массива
Задан линейный массив чисел N. N вводит пользователь. Вывести все простые числа массива.

5
30 / 30 / 13
Регистрация: 07.08.2012
Сообщений: 86
21.02.2013, 22:11 2
Конечно только первый. Вы же после выходите из main в одном из этих мест:
C++
1
2
3
   if (mas1[i] % j == 0) return 0;
    else
   cout<<mas1[i]<<" "; return 0;}
Это, видимо, нужно переписать вот так:

C++
1
2
3
4
5
6
7
8
9
int j;
  for (i = 0; i < r; i++){
    cout << mas1[i] << " ";
   for (j = 2; j<= sqrt(mas1[i]); j++)
    if (mas1[i] % j == 0) {
      cout << "not simple!\n";
      break;
    }
  }
1
4 / 4 / 0
Регистрация: 20.10.2012
Сообщений: 21
21.02.2013, 23:05  [ТС] 3
Цитата Сообщение от unit7 Посмотреть сообщение
Конечно только первый. Вы же после выходите из main в одном из этих мест:
C++
1
2
3
   if (mas1[i] % j == 0) return 0;
    else
   cout<<mas1[i]<<" "; return 0;}
Это, видимо, нужно переписать вот так:

C++
1
2
3
4
5
6
7
8
9
int j;
  for (i = 0; i < r; i++){
    cout << mas1[i] << " ";
   for (j = 2; j<= sqrt(mas1[i]); j++)
    if (mas1[i] % j == 0) {
      cout << "not simple!\n";
      break;
    }
  }
спасибо. Чуть
изменил, как нужно мне (вывести тольк простые числа)
C++
1
2
3
4
5
6
7
 int j;
  for (i = 0; i < r; i++){
   for (j = 2; j<= sqrt(mas1[i]); j++)
    if (mas1[i] % j == 0) {
      break;
    }else{cout<< mas1[i]<<" "; break;}
  }
0
30 / 30 / 13
Регистрация: 07.08.2012
Сообщений: 86
21.02.2013, 23:47 4
В таком случае у вас неверно будет определяться. Нужно вот так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
int j;
  for (i = 0; i < r; i++){
  bool simple = true;
   for (j = 2; j<= sqrt(mas1[i]); j++)
    if (mas1[i] % j == 0) {
      simple = false;
      break;
    }
  if (simple) {
    cout<< mas1[i]<<" "; break;
  }
  }
1
4 / 4 / 0
Регистрация: 20.10.2012
Сообщений: 21
22.02.2013, 01:39  [ТС] 5
Цитата Сообщение от unit7 Посмотреть сообщение
В таком случае у вас неверно будет определяться. Нужно вот так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
int j;
  for (i = 0; i < r; i++){
  bool simple = true;
   for (j = 2; j<= sqrt(mas1[i]); j++)
    if (mas1[i] % j == 0) {
      simple = false;
      break;
    }
  if (simple) {
    cout<< mas1[i]<<" "; break;
  }
  }
находит одно значение и останавливается
0
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
22.02.2013, 01:56 6
уберите break, там где печатается простое число.
1
22.02.2013, 01:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.02.2013, 01:56
Помогаю со студенческими работами здесь

Есть ли среди элементов массива простые числа? Если да, то вывести номера этих элементов
Задан целочисленный массив размерности N. Есть ли среди элементов массива простые числа? Если да,...

Есть ли среди элементов заданного массива простые числа? Если да, то вывести номера этих элементов
Задан целочисленный массив размерности N. Есть ли среди элементов массива простые числа? Если да,...

Дано натуральное число. Вывести на экран все простые числа до заданного числа.
Дано натуральное число. Вывести на экран все простые числа до заданного числа.

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru