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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
ViktorW
4 / 4 / 0
Регистрация: 20.10.2012
Сообщений: 21
21.02.2013, 22:03     Вывести простые числа из массива #1
Вообщем не пойму, почему не работает.
Для определения простое ли число использовал эту программу

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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2013, 22:03     Вывести простые числа из массива
Посмотрите здесь:

Есть ли среди элементов массива простые числа? Если да, то вывести номера этих элементов C++
Вывести простые числа C++
C++ Одномерный массив. Вывести на экран все числа, индексы которых есть простые числа.
C++ Дано натуральное число. Вывести на экран все простые числа до заданного числа.
Есть ли среди элементов заданного массива простые числа? Если да, то вывести номера этих элементов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
unit7
30 / 30 / 4
Регистрация: 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;
    }
  }
ViktorW
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;}
  }
unit7
30 / 30 / 4
Регистрация: 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;
  }
  }
ViktorW
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;
  }
  }
находит одно значение и останавливается
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
22.02.2013, 01:56     Вывести простые числа из массива #6
уберите break, там где печатается простое число.
Yandex
Объявления
22.02.2013, 01:56     Вывести простые числа из массива
Ответ Создать тему
Опции темы

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