Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
cybberdemon
0 / 0 / 2
Регистрация: 29.04.2013
Сообщений: 25
#1

Вывод простых чисел - C++

26.05.2013, 18:20. Просмотров 621. Ответов 11
Метки нет (Все метки)

задали задачу написать ряд простых чисел,у самого мозгов не хватило толком ее написать,написал с миру по нитке,без ввода с клавиатуры с заданным диапазоном от 3 до 1000 и вот какая пурга выходит,причем смотрю на программы которую написал одногруппник и тихо офигеваю ну в принципе тоже самое у него работает у меня какая то хрень выходит
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
#include<iostream>
using namespace std;
 
void main()
{
    setlocale(LC_ALL,"russian");
int b=1000,n=0;
for(int a=3;a<=b;a++)
{
    n=0;
    for(int i=1;i<a;i++)
    {
        {
            if(a%i==0)n++;
        }
        if(n>1);
        else cout<<a<<"\t";
 
    }
    cout<<"\n";
}
 
    
    system("pause");
}
а вот то что у меня выходит, скрин
http://www.cyberforum.ru/cpp-beginners/thread954051.html
0
Миниатюры
Вывод простых чисел  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 18:20
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вывод простых чисел (C++):

Вывод простых чисел от m до n
Здравствуйте! Возникла проблемка с задачкой. Требуется вывести все простые...

Вывод всех простых чисел.
Задали задачку. Вывести все простые числа от 1 до n Примерно сделал на...

Вывод простых чисел из массива
здравствуйте. я в интернете нашел программу которая выбирает простые числа из...

Вывод простых чисел на заданном отрезке
Поделитесь мыслью, как это сделать. В теории о том, каким образом искать...

Где ошибка, вывод простых чисел
for ( int i = 2; i * i &lt;= n; i++ ) { if ( n % i == 0 ) { ...

11
cybberdemon
0 / 0 / 2
Регистрация: 29.04.2013
Сообщений: 25
26.05.2013, 18:20  [ТС] #2
беда какая то,второй день воюю
0
zss
Модератор
Эксперт С++
6953 / 6515 / 4136
Регистрация: 18.12.2011
Сообщений: 17,184
Завершенные тесты: 1
26.05.2013, 18:26 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
bool prostoe(int n)
{
   for(int i=2;i<=n/2;i++)
       if(n%i==0)
             return false;
   return true;
}
int main()
{
    for(int n=3;n<=1000;n++)
    {
      if(prostoe(n))
          cout<<n<<" ";
    }
    return 1;
}
0
cybberdemon
0 / 0 / 2
Регистрация: 29.04.2013
Сообщений: 25
26.05.2013, 18:29  [ТС] #4
а можно найти в моем коде неточность,а то в вашем коде мне мало что понятно
0
genock94
20 / 20 / 8
Регистрация: 16.11.2012
Сообщений: 348
26.05.2013, 18:34 #5
cybberdemon, не могли бы Вы устно объяснить свой алгоритм? А то я в первый раз вижу подобное..
0
zss
Модератор
Эксперт С++
6953 / 6515 / 4136
Регистрация: 18.12.2011
Сообщений: 17,184
Завершенные тесты: 1
26.05.2013, 18:35 #6
Цитата Сообщение от cybberdemon Посмотреть сообщение
if(n>1);
означает, если n>1, то "пустой оператор".
; ставить нельзя.
А мой код более понятен:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
bool prostoe(int n)// функция определяет простое ли число n
{
   for(int i=2;i<=n/2;i++)
       if(n%i==0) // Если делится на i, то не простое
             return false;
   return true;   // не делится ни на одно - простое.
}
int main()
{
    for(int n=3;n<=1000;n++)
    {
      if(prostoe(n)) // если простое, то выводим
          cout<<n<<" "; 
    }
    return 1;
}
1
genock94
20 / 20 / 8
Регистрация: 16.11.2012
Сообщений: 348
26.05.2013, 18:37 #7
Цитата Сообщение от cybberdemon Посмотреть сообщение
if(n>1);
что это такое? если условие выполняется, то ничего не произойдёт, т.к. стоит ;
0
cybberdemon
0 / 0 / 2
Регистрация: 29.04.2013
Сообщений: 25
26.05.2013, 18:43  [ТС] #8
это означает,что если условие истинно то он пойдет проверять условия самого for ,а если нет то выведет число
0
zss
Модератор
Эксперт С++
6953 / 6515 / 4136
Регистрация: 18.12.2011
Сообщений: 17,184
Завершенные тесты: 1
26.05.2013, 18:44 #9
если хотите оставить без функции,
то поправьте циклы
C++
1
2
3
4
5
6
7
8
9
10
11
12
for(int a=3;a<=b;a++)
{
    n=0;
    for(int i=1;i<=a/2;i++)
    {
         if(a%i==0)
        {
            n=1;break;
        }
    }
     if(n==0)cout<<a<<"\t";
}
0
cybberdemon
0 / 0 / 2
Регистрация: 29.04.2013
Сообщений: 25
26.05.2013, 18:54  [ТС] #10
теперь вообще ничего не выводит

Добавлено через 1 минуту
вот такая же задача моего одногруппника
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
#include <iostream>
using namespace std;
 
void main()
{
    char c;
     {setlocale(LC_ALL,"Rus");  // функция написания русского текста
pp: cout<<"\n Программа для вычисления простых чисел  в диапазоне от 2 до 1000 ";
  cout<<"\n\n\t Введите первое число диапазона ";
   int a=0;
    cin>>a;
    if (a<=1 || a>1000)  goto p;
 
 cout<<"\n\t Введите последнее число диапазона ";
   int b=0;
    cin>>b;
   if (b<=1 || b>1000 || b<a)  goto p;
for(  ;a<=b;a++)
{
            int sum=0;
     for(int i=1;i<a;i++)
         {
     if(a%i==0)  sum++;
         }
     if(sum>1);
     else   cout<<" "<<a<<"\t";
}
  goto ppp;
p:cout<<"\n\n\t\t от 2 до 1000 повторите правильно  ввод \n"; goto pp;
  ppp: cout<<" \n конец программы благодарю за  тест";
   cin>>c;   
     }
}
Добавлено через 46 секунд
у него выводит ряд простых чисел,правда он задавал еще диапазон вводимый пользователем

Добавлено через 26 секунд
у него работает,у меня чего то нет,мистика какая то
0
zss
Модератор
Эксперт С++
6953 / 6515 / 4136
Регистрация: 18.12.2011
Сообщений: 17,184
Завершенные тесты: 1
26.05.2013, 18:55 #11
У Вас еще одна незаметная ошибка была
внутренний цикл надо начинать с двойки
for(int i=2;i<=a/2;i++)
0
Genn55
378 / 225 / 108
Регистрация: 26.12.2012
Сообщений: 744
26.05.2013, 23:44 #12
Работает
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
#include <iostream>
#include <math.h>
 
using namespace std;
 
//прототип функции
inline bool simple(int);
 
int main()
{
int b=1000, a = 3;
for(int i = a; i <= b; i++)//задается интервал
if(simple(i))
cout  << i<<"\t";
 
return 0;
}
 
inline bool simple(int num)
{
if(num < 2)
return false;
else
for(int i = 2; i <= sqrt(num); i++)// sqrt(num) сокращается число проверок
if(num % i == 0)
return false;
 
return true;
}
0
26.05.2013, 23:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2013, 23:44
Привет! Вот еще темы с решениями:

Вывод всех простых чисел в диапазоне от 1 до 100
Написать функцию, определяющую, является ли введенное целое чис- ло простым...

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

Вычислить количество простых чисел среди положительных чисел массива
Дан массив целых положительных и отрицательных чисел в количестве меньше или...

Дан массив целых чисел. Верно ли, что он состоит только из простых чисел?
Дан массив целых чисел. Верно ли, что он состоит только из простых чисел?


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

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

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